1

pskill を使用してプロセスをリモートで強制終了しようとしています。

コマンド ラインから pskill はうまく機能しますが、C# で同じコマンドを実行しようとすると、アクセス拒否エラーが発生します。

    var startInfo = new ProcessStartInfo {
                                            FileName = "pskill.exe",
                                            Arguments = "-t \\" + _currentMachine + 
                                                        " -u BobSmith -p Pass123 " + _currentService + 
                                                        " /acceptEULA"
                                         };

    try {
        using (Process exeProcess = Process.Start(startInfo)) {
            exeProcess.WaitForExit();
        }
    } catch {
        Console.WriteLine("Cannot forcibly kill process.");
    }

手動で正常に動作する .bat ファイルを作成しようとしましたが、C# から .bat を呼び出そうとすると同じエラーが発生します。

XPマシンでwin 2003サーバーにアクセスしようとしています。

4

3 に答える 3

1

次男のために…

pskill.exe は、Win2000 互換モードで実行する必要がありました。

于 2010-07-19T19:29:46.943 に答える
0

資格情報を再確認します。それか、プロセスが「ロック」されています。

于 2010-07-19T18:50:01.150 に答える
0

C# では、文字列内の文字はデフォルトでエスケープされます。Arguments に割り当てる文字列には、2 つのエスケープ文字が含まれています。それらは単一のバックスラッシュになっていると思われます。@これを解決するには、文字列定義の前に を追加します。

  Arguments = @"-t \\" + _currentMachine + 

いずれにせよ、コマンド ライン全体をテキスト ファイルに書き出すコードを追加し、それが必要なとおりであることを確認することをお勧めします。テキスト ファイルの拡張子が bat の場合、正常に実行できますか?

于 2010-07-19T19:03:26.950 に答える