我想知道我的一个项目,是否可以从注册表或任何其他方式更改MachineGuid?我已经在多个应用程序中看到它,我自己也做不到。这是我的代码
RegistryKey reg = Registry.LocalMachine;
reg.OpenSubKey("SOFTWARE\\Microsoft\\Cryptography");
reg.DeleteValue("MachineGuid");
reg.Close();
consolebox.AppendText("MachineGuid should be changed!\n");
但它不起作用..它不会删除MachineGuid值,它会在大约一秒钟内自动重新生成....
错误说它没有找到值.. MachineGuid不存在......但是当我去注册时它会吗?
如果我没有以管理员身份运行该应用程序,则表示该值已被删除,但如果我这样做则说它不存在....
答案 0 :(得分:1)
您有几个问题,首先您不要打开可写的密钥而不使用OpenSubKey
的结果。该方法返回您实际打开的密钥。
RegistryKey reg = Registry.LocalMachine;
using(var key = reg.OpenSubKey("SOFTWARE\\Microsoft\\Cryptography", true)) // writeable
{
key.DeleteValue("MachineGuid");
}
RegistryKey
对象实现IDisposable
,在这种情况下更好地应用使用模式来关闭并处理密钥。