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
命名空间。