2012-11-16 121 views
0

下面的代碼不會寫入註冊表,我已經在那裏,但會與許多其他人一起嘗試過。它運行代碼並且沒有任何迴應。它似乎一直工作,直到我檢查登記冊並沒有任何內容。無法寫入註冊表

我有適當的權限,但我不明白爲什麼這個關鍵是如此特別。我可以手動進入並創建它,但我需要這個程序來做到這一點。提前致謝。

string machineName = txtBox.Text; 
RegistryKey subKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, machineName).OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce", true); 
subKey.SetValue("DeltmpfileOnReboot", @"cmd.exe /c RD /S /Q C:\data\tempFolder /f", RegistryValueKind.String); 

找到鑰匙......它神奇地出現在HKLM \ SOFTWARE \ Wow6432Node。奇...

編輯發現問題... Write the registry value without redirect in Wow6432Node由Hans第二個答案...順便它總是愚蠢的東西一樣,

+2

運行此代碼的帳戶是否有權寫入該密鑰? – Oded

+0

您正在運行的是哪個版本的Windows?你需要提升權限嗎? (Vista/7/8) –

+0

很抱歉忘了添加,Windows 7和是的,我作爲管理員運行,它有權限。 – Garrett

回答

1

你的做法是錯誤的。如果你想在重新啓動時刪除一個文件,最好使用Win32 API MoveFileEx

在這裏看到:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365240(v=vs.85).aspx

和:

http://www.pinvoke.net/default.aspx/kernel32.MoveFileEx

您只需設置目標爲null,在標誌指定MOVEFILE_DELAY_UNTIL_REBOOT

+0

謝謝,但我不能使用 – Garrett

+0

爲什麼不呢?比試圖從註冊表中產生命令提示符更好的解決方案? – Lloyd

+0

其實我看到,你正試圖在遠程機器上做到這一點。 – Lloyd