0

プロセスをリモートで強制終了/再起動する必要があるので、助けてください。

私はこれを試しましたが、運がありません。エラーは-「リモートマシンに接続できませんでした」でした

Process[] prs = Process.GetProcesses("SERVERNAME");

   foreach (Process pr in prs)
    {
       if (pr.ProcessName == "process")
       {
           pr.Kill();
       }
    }

これも試してみましたが、それでも機能せず、「アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))」というエラーが発生しました。

ManagementScope scope = new ManagementScope("\\\\SERVERNAME\\root\\cimv2");
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Process WHERE Name='process'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection objectCollection = searcher.Get();

   foreach (ManagementObject managementObject in objectCollection)
      {
       managementObject.InvokeMethod("Terminate", null);
      }

誰かがこれに対する解決策を持っていることを願っています。よろしくお願いします!

4

2 に答える 2

4

ええと、エラーは実際に何が悪いのかを正確に教えてくれます。アプリケーションはリモートマシンへの接続に失敗しました。これはいくつかの理由で発生する可能性があります。

  1. リモートコンピュータが利用できません(存在しません)
  2. リモートコンピューターでリモート接続用にWMIが開いていないか、リモートコンピューターまたは途中でファイアウォールが使用されています。
  3. このアクションを実行する権限がありません。コードの偽装のどこにも表示されないため、接続は現在のプロセストークンを使用します(どのアカウントであるかは、アプリケーションプールの構成、またはデフォルトでタグを使用する場合はweb.configによって異なります)。 -それはNTAUTHORITYです)。実行している資格情報を使用してWMIを使用してリモートマシンにアクセスするためのアクセス許可がない可能性があります。これは、コード、web.config、またはアプリケーションプール設定で、十分な権限を持つアカウントになりすますことで解決できます(ドメインにいる場合は、IT部門にアカウントを依頼してください)。

幸運を。

于 2012-10-04T13:45:55.577 に答える
0

web.config適切なアカウント(権限を持つアカウント)を使用して、これをに追加します。

<identity impersonate="true" userName="UserWithPermissions" password="pw" />
于 2013-06-07T20:10:37.203 に答える