0

以下代码不会写入我在那里的注册表,但会与我尝试过的许多其他代码一起写入。它运行代码并且不返回任何内容。在我检查 reg 之前它似乎一直有效,但那里什么也没有。

我有适当的权限,但我不明白为什么这个密钥如此特别。我可以手动进入并创建它,但我需要这个程序来完成它。提前致谢。

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。奇怪的...

编辑发现问题...在Wow6432Node中写入注册表值而不重定向hans passant的第二个答案...它总是像那样愚蠢

4

1 回答 1

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在标志中指定。

于 2012-11-16T14:16:07.380 回答