2012-03-15 14 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

+1

'Microsoft.Win32.Registry'名前空間を参照してください。 – Rotem

答えて

1

CMD.exe/cおよび/ kスイッチに精通してください。

コメント者が言ったように、それをとても複雑にする理由はありません。外部プログラムが本当に必要な場合(私は理由がない)、cmd.exeを使わずにreg.exeを直接呼び出すことができます。

関連する問題