WinCE下读取注册表获得SD路径
【要点】WinCE注册表中[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory\] 下键Folder的值就是存储卡的名字
在用C#开发WinCE软件时,如果需要获得存储卡路径,可以采用如下方法:
1、添加对Microsoft.Win32的引用。因为注册表相关的两个类RegistryKey和Registry都是在这个命名空间中定义的
using Microsoft.Win32;
2、定义一个RegistryKey,用于读取注册表值。
//注册表路径
string path = @"System\StorageManager\Profiles\SDMemory";
RegistryKey key = null;
key = Registry.LocalMachine.OpenSubKey(path,false);
3、判断路径path下是有Folder键后读取并返回即可获得存储卡的名字。之后该怎么用怎么用吧!
if (key.GetValue("Folder") != null)
{
// key.GetValue("Folder").ToString() 即为存储卡的名字 MessageBox.Show(key.GetValue("Folder").ToString());
}
4、完整代码如下,在我WinCE5.0下测试通过:
using System;
using System.Windows.Forms;
using Microsoft.Win32;
//读取注册表中键值
namespace GetFlashCardPath
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string path = @"System\StorageManager\Profiles\SDMemory";
RegistryKey key = null;
key = Registry.LocalMachine.OpenSubKey(path,false);
if (key.GetValue("Folder") != null)
{
MessageBox.Show(key.GetValue("Folder").ToString());
key.Close();
}
}
}
}
5、你也可以通过修改这个注册表键来改变存储卡的显示路径。
生命key是可以写入的
key = Registry.LocalMachine.OpenSubKey(path,true);
之后写入你想要写入的值
key.SetValue("Folder", "存储卡");
6、如果你是牛人,可以使用API FindFirstFlashCard和FindNextFlashCard来获取WinCE上任何类型的存储卡,这样最保险
7、截图一张