2011-07-11 13 views
1

これは先日働いていましたが、今は変わっていません...何も変更していないことを覚えていませんが、このreg.exeコマンドをCMDの下の引数で実行できます出力ファイルを作成します。 VC#で実行しても、test_output.txtというファイルは作成されません。Visual C#のプロセス引数が正しく動作しない

System.Diagnostics.Process proc_cmd = new System.Diagnostics.Process(); 
     proc_cmd.StartInfo.FileName = @"c:\windows\system32\reg.exe"; 
     proc_cmd.StartInfo.Arguments = @"query ""HKLM\Software\test\test software"" /v BuildNumber >c:\test\test_output.txt"; 
     proc_cmd.StartInfo.CreateNoWindow = true; 
     proc_cmd.StartInfo.RedirectStandardError = true; 
     proc_cmd.StartInfo.RedirectStandardOutput = true; 
     proc_cmd.StartInfo.RedirectStandardInput = true; 
     proc_cmd.StartInfo.UseShellExecute = false; 
     proc_cmd.Start(); 
    proc_cmd.Close(); 
+0

* Vistual C#process *?この獣は何ですか?まだ会っていない。 –

+0

@thanosazlin - あなたはあなたの問題の解決策を得ているので、あなたはこの質問に答えたと印をつけるような衝動を感じませんか? – grapkulec

答えて

3

代わりにRegistryクラスを使用してください。

+0

ここにちょっとした情報があります。いくつかのテストの後、コマンドラインと.netプロセスからHKLM \ SOFTWAREに対してreg.exeを実行すると、2つの異なる結果セットが生成されることがわかりました。だから私はプロセスからreg.exeを使用すると、あなたが言及したようにレジストリを使用する方がはるかに良いので、本当に無関係な期待された出力が得られないと思います。 – mockobject

+0

素晴らしい!レジストリは完璧に感謝 – thanosazlin

2

>output.txtは、コマンドインタープリタ(cmd.exe)への指示です。それはreg.exeを呼び出すことはできません。代わりにcmd.exeを呼び出すか、stdoutをリダイレクトしてファイルに書き込んでください。このSO answer linkを参照してください。

もちろん、Reg.exeにシェルする魅力的な理由がない場合は、Registryクラスを使用する必要があります。

+0

素晴らしい!レジストリは完璧に感謝した – thanosazlin

関連する問題