10

これが簡単な質問であることを願っていますが、C# アプリケーションに次のコードがあり、何らかの理由で、指定しているバッチ ファイルが実行されません。

private void filesystemwatcher_Renamed(object sender, System.IO.RenamedEventArgs e)
{
    if (File.Exists("C:\\Watcher\\File.txt"))
    {
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName = "C:\\Watcher\\Cleanup.bat";
        proc.Start();
        MessageBox.Show("Cleaned up files, your welcome.");

    }
    else
    {
        label4.Text = "Error: No file found";
    }
}

メッセージボックスが正しく表示されるので、そのコード領域に到達していることはわかりますが、コマンドボックスがポップアップしたり、バッチファイルを実行したことを示すものは表示されません。cleanup.bat はファイルの名前を変更するだけなので、それもわかります。メッセージボックスを取得した後、ファイル名は変更されていません。

バッチ ファイルを手動でダブルクリックすると、問題なく動作します。また、バッチ ファイルのアクセス許可をすべてのユーザーに対してフル コントロールに調整しました (テスト目的のみ)。

4

2 に答える 2

4

を に設定してみてproc.StartInfo.UseShellExecuteくださいtrue。これにより、ファイル拡張子のルックアップを実行してレジストリ内の正しいハンドラーを見つけるよう OS に指示します。

于 2013-05-29T20:51:29.710 に答える