5

私はMicrosoftVisualStudioを使用して、経験を積んだシンプルなリモートタスクマネージャーを作成しています。

使用したいのですProcess.GetProcesses(string);が、リモートコンピュータプロセスを取得できないアクセス拒否の例外があります。実際、ユーザー名とパスワードを使用して認証する必要があるため、これは正常ですが、どのようにしたらよいでしょうか。

4

3 に答える 3

2

この目的でWMIを使用してみてください

/// using System.Management;  
// don't forget! in VS you may have to add a new reference to this DLL
ConnectionOptions op = new ConnectionOptions();
op.Username = "REMOTE_USER";
op.Password = "REMOTE_PASSWORD";

ManagementScope sc = new ManagementScope(@"\\REMOTE_COMPUTER_NAME\root\cimv2", op);

ObjectQuery query = new ObjectQuery("Select * from Win32_Process");

ManagementObjectSearcher searcher = new ManagementObjectSearcher(sc, query);
ManagementObjectCollection result = searcher.Get();

foreach (ManagementObject obj in result)
{
     if (obj["Caption"] != null) Console.Write(obj["Caption"].ToString() + "\t");
     if (obj["CommandLine"] != null) Console.WriteLine(obj["CommandLine"].ToString());
}

Win32_Processクラスの詳細については、 MSDNを参照してください。

hth

于 2011-07-20T06:55:58.847 に答える
1

編集:あなたの投稿をもう一度読んでください。私の投稿で説明されている手順はドメインにのみ適用されます。あなたはワークグループ内で作業していると思います。ごめんなさい。

最近、Windows7で管理者としてVisualStudioを実行しているときに、同様の問題が発生しました。プログラムをローカル管理者として実行するようにプログラムを昇格させると、リモートマシンとネットワーク共有のアクセス許可が失われるようです。 VSが管理者として実行されているときにVSからプログラムを実行する場合。これは、ドメイン全体の管理者アカウントを持っている場合でも発生します。

次のことを試してください。

  • ソリューションを構築する
  • 昇格せずに、Windowsエクスプローラーからリモートコンピューターで特権を持っているアカウントで手動で実行します

これが役立つ場合は、管理者としてのVSの実行を停止できます。それは私のためにうまくいった。

于 2011-07-20T07:34:08.233 に答える
0

これを行うには昇格が必要であるか、少なくともなりすましによってより強力なユーザーを使用する必要があると確信しています

于 2011-07-20T06:29:03.090 に答える