2013-07-30 35 views
1

我正在處理應該更改註冊表數據值的內容。所以用戶點擊一個按鈕,它會改變這個值。我使用C#在PowerShell中運行命令。Powershell命令使用C來更改子文件夾中的註冊表值#

當我用這個...

string script = "Set-ItemProperty -path \HKLM:\\ -name rname -value + new"; 

它在主文件夾中更改數值沒有問題,但是當我嘗試改變其子文件夾,像這樣的一個值..

string script = "Set-ItemProperty -path \HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon -name rname -value + new"; 

它什麼也沒做。價值根本沒有改變。

有人可以幫忙嗎?

+1

如果你正在使用c#,爲什麼要使用Powershell來處理註冊表? – crashmstr

+0

我不得不使用PowerShell來訪問它?什麼是另一種方式?我真的不用C#或Powershell。我發現了一個代碼,它做了一些與我想要的類似的東西,但並不完全如此,因此我將它作爲基礎並進行了一些調整。 – Ello

+0

是的,在.Net中有一個註冊表類,請參閱下面Will Eddins的答案。 – crashmstr

回答

5

一個更好的選擇可能是在C#中使用Registry class

Registry.SetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\...", "rname", value); 

應該完成同樣的事情,但在一個更簡單的方法。

0

如果你在C#中這樣做,你還需要避開反斜槓。例如,而不是HKLM:\software\Micro...,你需要HKLM:\\software\\Micro...

+0

我其實在我的代碼中有。由於某種原因,它沒有在我的文章中顯示它,但現在它確實如此。 – Ello

相關問題