2016-11-18 101 views
0

我想知道我的一個項目,是否有可能從註冊表或任何其他方式更改MachineGuid?我已經看到了它在多個應用程序,我不能做到這一點myself..This是我的代碼Change MachineGuid C#

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

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

但它不工作..它不會刪除MachineGuid值,這將自動重新生成在大約一秒...

該錯誤說,它沒有找到值..該MachineGuid不存在...但是當我去註冊表它呢?

如果我不運行應用程序作爲管理員,它說的值刪除了,但如果我做它說,它不存在....

+0

你說它會被重新創建。價值是不同的? –

+0

這將是,如果值被刪除。它會重新創建一個不同的值。 –

+0

'Wow6432Node'掩蓋也許 - http://stackoverflow.com/questions/869783/windows-64-bit-registry-v-s-32-bit-registry? –

回答

1

你有幾個問題,第一您不打開密鑰以便寫入,並且您不使用OpenSubKey的結果。該方法返回您實際打開的密鑰。

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

RegistryKey對象實現IDisposable,更好的應用使用模式在這種情況下,關閉和處置的關鍵。

+0

謝謝!!!!!! –