2

イベントをリッスンするSystem.Management.WqlEventQueryがあります。"__InstanceOperationEvent"このイベントは、、、およびイベントの基本クラスであるため"__InstanceCreationEvent"、3 つすべてをキャプチャします。"__InstanceDeletionEvent""__InstanceModificationEvent"

WqlEventQuery.Conditionがの場合、"TargetInstance ISA 'Win32_LogicalDisk'"予想どおり、論理ディスクのイベントのみを取得します。

ただし、WqlEventQuery.Conditionがの場合でも、 Win32_LogicalDiskイベント"(TargetInstance ISA 'Win32_LogicalDisk' or TargetInstance ISA 'Win32_MappedLogicalDisk')"しか取得できません。または、 CIM_LogicalDiskがWin32_LogicalDiskWin32_MappedLogicalDiskの両方の基本クラスであるため、WqlEventQuery.Conditionを として使用することもできます。残念ながら、この代替クエリもWin32_LogicalDiskイベントのみを返します。"TargetInstance ISA 'CIM_LogicalDisk'"

要約すると、 Win32_MappedLogicalDiskイベントをキャプチャできないようです。私の推測では、ネットワーク共有を右クリックしてネットワーク ドライブとして新しいドライブ文字にマップすると、このようなイベントが生成されるはずです。この新しいマップされたドライブがエクスプローラーに正常に表示されているにもかかわらず、私のプログラムはイベントを受け取りません。

私の仮定は間違っていますか?Win32_MappedLogicalDriveとは何ですか、またはDriveTypeが "NetworkDrive"であるWin32_LogicalDriveとの違いは何ですか? WMI を使用してネットワーク ドライブの接続/切断のイベントをキャプチャするにはどうすればよいですか?

更新:この問題について詳しく投稿しました : http://social.technet.microsoft.com/Forums/en-US/ocsmanagement/thread/1c92f08b-b9c9-4f27-a1bb-0c16a8868d19管理者アカウントで重複したドライブ マッピングを作成する以外に回避策はありません。

4

1 に答える 1

2

これは(いつものように)ある種のVista / Window 7 UAC関連の動作であり、確かに... http://www.vistax64.com/powershell/270814-win32_mappedlogicaldisk-returns-null-vista .html

マップされたドライブは「ユーザーごと」であるため、昇格されていないユーザー (エクスプローラーなど) によってマップされたドライブは、管理者として昇格された WMI クエリでは表示されません。通常、アプリケーションは管理者として実行されている情報にアクセスできますが、アクセスできる情報が少なくなることはありません。したがって、ドライブをマップした人によっては、昇格された特権で実行されているかどうかに応じて、プログラムに表示される場合があります。偽装オプションを使用して、プログラムがアクセスできる可能性のあるすべてのドライブを確実に見つける必要があると思います。

さらに、これが機能するようになると、ネットワーク ドライブの重複したエントリが表示され、クラス階層に関する限り、Win32_MappedLogicalDISk は Win32_LogicalDisk ではありませんが、Win32_LogicalDisk オブジェクトのセットに Win32_MappedLogicalDisk オブジェクトが含まれていることに気付きました。ドキュメントによると、Win32_MappedLogicalDisk は、Win32_LogicalDisk と同様に、CIM_LogicalDisk から直接拡張されます。

ここで、マップされたドライブの UAC によって引き起こされる問題に関する議論を参照してください。 aspx?PageIndex=2

抜粋:

「私のスタブは管理者に昇格して実行されています。標準ユーザーがマッピングしたドライブを何らかの形で検出し、マッピングを再度実行できることを示唆していますか?または、2つのスタブが必要ですか?昇格なしで最初に実行すると、リストが作成されます(たとえば、マップされたドライブのレジストリに) を送信し、スタブ #2 にシェルを発行します。これは、管理者への昇格を要求し、レジストリ リストを読み取り、ドライブを再マップします。 私にはちょっとルーブ ゴールドバーグのように聞こえます! "

もう 1 つの回避策は、管理者用のドライブ マッピングを複製するようなものですが、通常のユーザー ドライブ マッピングを管理者とトークンをリンクすることで共有できるようにする必要があります。http://support.microsoft.com/kb/937624を参照してください。

于 2011-06-22T17:11:43.247 に答える