Windows

讓目前登錄的使用者進入 Windows XP Pro 系統

  • August 21, 2013

我們有一台 XP 機器,它在清晨執行計劃任務,不幸的是,它必須登錄到某個使用者的桌面才能工作。不幸的是,該使用者有時會被註銷——要麼是管理員登錄(忘記重新登錄正確的使用者),要麼是重新啟動以應用安全更新等。

我想讓 Nagios 監視目前登錄的使用者,以確認它是正確的。Nagios 在 Linux 上執行。

到目前為止,我已經為目前使用者尋找了一個 SNMP 變數;我沒有運氣。我嘗試使用 grep’d 獲取使用者名,並在登錄前和登錄後進行了操作,並檢查了差異,但沒有發現任何用處。snmpbulkwalk -m all -v2c -c *community* machine

我檢查了net命令(來自 Samba),但我沒有看到任何東西——儘管我承認我可能錯過了一些東西。各種session選項似乎只顯示net會話(即使我使用我的域管理員帳戶)。

%WINDIR%\System32\dllcache\query.exe session將為您提供 WinXP 上所有目前登錄使用者的列表。

出於某種原因,query.exe 不在我的 WinXP 測試機器上的路徑環境變數中,所以我指定了整個路徑。

詢問

如果您需要能夠通過 RPC/DCOM 遠端獲取此資訊的東西,請查看我寫的一些內容:

http://myotherpcisacloud.com/post/2013/01/16/Usersexe-v1003.aspx

http://www.myotherpcisacloud.com/post/2013/01/13/Getting-RDP-Sessions-with-Client-Computer-Name.aspx

順便說一句,您需要盡快退出 XP。它很老了。

**編輯:**好的,我會給你另一個選擇,因為這些都沒有幫助你。您想使用您的 Linux 機器通過網路查詢這台 WinXP 機器。您想使用 WMI。您已找到適用於 Linux 的 WMI 客戶端。到現在為止還挺好。

這將使您目前通過 WMI WQL 查詢登錄本地或遠端電腦的使用者。我在 Powershell 中寫了這個。抱歉,我不會(閱讀:不能)為您將其轉換為 Perl 或 Bash,但只要您可以執行 WQL 查詢,概念仍然相同:

$Sessions = Get-WMIObject -Query "SELECT * FROM Win32_LogonSession WHERE LogonType=2 OR LogonType=10"
Foreach($Session In $Sessions)
{
   If($Session -AND $Session.PSObject.Properties.Match('LogonId').Count)
   {
       Get-WMIObject -Query "Associators Of {Win32_LogonSession.LogonId=$($Session.LogonId)} WHERE AssocClass=Win32_LoggedOnUser Role=Dependent"
   }
}

LogonTypes 2 和 10 涵蓋本地和遠端互動會話,但不包括服務登錄、網路登錄或批處理登錄。

是的,您確實需要訪問 WinXP 機器的權限。這不僅僅是為了匿名網路程序而咳出所有這些數據。WinXP 上的本地組不是很細化,因為 WinXP 很老了,它的安全性遠不如現代版本的 Windows……我的意思是把你的網路監控使用者放在 WinXP 機器的本地管理員組中可能是你最好的選擇。但是,如果您仍想遵循最小權限原則,我推薦您,在這種情況下,您可以使用 WMI 控制台 wmimgmt.msc,並將權限設置為您想要分配權限的任何帳戶。

引用自:https://serverfault.com/questions/531364