【发布时间】:2013-01-08 10:35:06
【问题描述】:
我正在尝试从注册表中获取MachineGuid,以便为我的许可证系统创建与操作系统的某种级别的绑定。从我可以使用的文档中
string key = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography";
string r = (string)Registry.GetValue(key, "MachineGuid", (object)"default");
得到它。此外,文档告诉我,当找不到名称时我会得到"default",如果密钥不存在,我会得到null。如果我无权访问,我应该得到一个安全异常。
上面的代码给了我"default",这意味着找不到这个名字。但是,如果我用 RegEdit 查看注册表,它就在那里。如何在没有管理员权限的情况下从应用程序中获取 MachineGuid 值?
更新:当使用reg.exe 时,获取值没有问题。
更新:我更新了标题,因此寻找独特方法来确定 Windows 安装的人也可以在这里找到。
【问题讨论】:
-
这似乎是一个注册表重定向问题:stackoverflow.com/questions/5262830/…。好像注册表还不够坏。
-
您是否在 64 位机器上运行 32 位进程?
-
@Clemens 您使用的是哪个操作系统?如果它与 OP 的版本不同,那么这很可能有充分的理由为您而不是他工作
-
@BartFriederichs 你用的是什么操作系统?和克莱门斯一样吗?
标签: c# windows registry wmi serial-number