簡體   English   中英

C#,WMI和Windows 7與Windows 2008通訊

[英]C#, WMI and Windows 7 talking to Windows 2008

我已經為此花了幾天的時間,但我不知道發生了什么。 我的開發箱是一台Windows 7 64位計算機,我試圖通過WMI連接到Windows Server 2008域控制器。

我的代碼很簡單:

ConnectionOptions options = new ConnectionOptions();
options.Username = _username;
options.Password = _password;
options.EnablePrivileges = true; 
options.Impersonation = ImpersonationLevel.Impersonate;
options.Authentication = AuthenticationLevel.Default;           

ManagementScope scope = new ManagementScope(@"\\" + _hostip + @"\root\cimv2", options);

scope.Connect(); // this works!

ManagementEventWatcher watcher = new ManagementEventWatcher();
watcher.Scope = scope;
watcher.Query = new EventQuery(@"SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent' and TargetInstance.LogFile = 'Security'");

watcher.Start() // throws exception
watcher.WaitForNextEvent(); // works

我對WMI的了解有限,我無法弄清楚WaitForNextEvent()為何起作用,而Start()卻不起作用。 我一直得到的例外是: 拒絕訪問。 (來自HRESULT的異常:0x80070005(E_ACCESSDENIED))

我已經多次檢查我嘗試連接的域控制器是否正確設置(遠程處理已啟用,已啟用並具有權限),就像我用來連接的用戶帳戶一樣。

任何想法和見解將不勝感激。

嘗試這個:

options.Authentication = AuthenticationLevel.PacketPrivacy;

我認為您很熱衷於此錯誤,因為如文檔中所述 ,部分受信任的代碼無法使用此成員。 有關更多信息,請參見使用部分受信任代碼中的庫

您無需使用該成員即可接收事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM