更改MachineGuid C#

时间:2016-11-18 12:13:26

标签: c# windows

我想知道我的一个项目,是否可以从注册表或任何其他方式更改MachineGuid?我已经在多个应用程序中看到它,我自己也做不到。这是我的代码

            RegistryKey reg = Registry.LocalMachine;
            reg.OpenSubKey("SOFTWARE\\Microsoft\\Cryptography");
            reg.DeleteValue("MachineGuid");
            reg.Close();

            consolebox.AppendText("MachineGuid should be changed!\n");

但它不起作用..它不会删除MachineGuid值,它会在大约一秒钟内自动重新生成....

错误说它没有找到值.. MachineGuid不存在......但是当我去注册时它会吗?

如果我没有以管理员身份运行该应用程序,则表示该值已被删除,但如果我这样做则说它不存在....

1 个答案:

答案 0 :(得分:1)

您有几个问题,首先您不要打开可写的密钥而不使用OpenSubKey的结果。该方法返回您实际打开的密钥。

RegistryKey reg = Registry.LocalMachine;
using(var key = reg.OpenSubKey("SOFTWARE\\Microsoft\\Cryptography", true)) // writeable
{
     key.DeleteValue("MachineGuid");
}

RegistryKey对象实现IDisposable,在这种情况下更好地应用使用模式来关闭并处理密钥。