2012-03-15 78 views
0

我想創建一個切換註冊表值的文件。更改控制檯應用程序中的註冊表值

我試圖讓它獲得價值,然後根據結果採取行動。我不太喜歡控制檯應用程序。該計劃似乎掛起。我究竟做錯了什麼?

 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(); 
+2

你爲什麼不使用'Registry.GetValue(...)'? – MoonKnight 2012-03-15 13:45:18

+1

請參閱'Microsoft.Win32.Registry'命名空間。 – Rotem 2012-03-15 14:00:59

回答

1

熟悉CMD.exe/c和/ k開關。

正如評論者所說,沒有理由讓它變得如此複雜。如果你真的需要外部程序(我沒有理由),你可以直接調用reg.exe,而不需要cmd.exe。

相關問題