C# 在控制台应用程序中更改注册表值
我想制作一个切换注册表值的文件 我试图让它获得价值,然后根据结果采取行动。我不太喜欢控制台应用程序。这个节目似乎挂了。我做错了什么C# 在控制台应用程序中更改注册表值,c#,console,registry,C#,Console,Registry,我想制作一个切换注册表值的文件 我试图让它获得价值,然后根据结果采取行动。我不太喜欢控制台应用程序。这个节目似乎挂了。我做错了什么 Process p = new Process(); ProcessStartInfo psi = new ProcessStartInfo(); psi.CreateNoWindow = true; psi.UseShellExecute = false; psi.RedirectS
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.FileName = "c:\\windows\\syswow64\\cmd.exe";
psi.Arguments = "reg query HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\AD7Metrics\\Engine\\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2} /v ProgramProvider /s";
p.StartInfo = psi;
p.Start();
if (p.StandardOutput.ReadToEnd().Contains("3FFA64D1D639"))
psi.Arguments = "reg add HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\AD7Metrics\\Engine\\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2} /v ProgramProvider /d {170EC3FC-4E80-40AB-A85A-55900C7C70DE} /f";
else
psi.Arguments = "reg add HKLM\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\AD7Metrics\\Engine\\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2} /v ProgramProvider /d {4FF9DEF4-8922-4D02-9379-3FFA64D1D639} /f";
p.StartInfo = psi;
p.Start();
熟悉CMD.exe/c和/k开关
正如评论员所说,并没有理由让事情变得如此复杂。如果您确实需要外部程序(我看不出原因),可以直接调用reg.exe,而不使用cmd.exe。为什么不使用
Registry.GetValue(…)
?请参阅Microsoft.Win32.Registry
命名空间。