2014-08-30 54 views

回答

0

您可以嘗試檢查logonui.exe進程是否存在。如果你找到它,計算機被鎖定或沒有登錄。

Function IsLocked(strComputer) 

    With GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
     IsLocked = .ExecQuery("select * from Win32_Process where Name='logonui.exe'").Count > 0 
    End With 

End Function 

要測試本地計算機,通過PC的名稱或一段時間。例如:

If IsLocked(".") Then MsgBox "Local computer is locked." 
+0

謝謝。我試過運行它,但即使計算機被鎖定,IsLocked也是錯誤的。我使用Windows 7 64位。 – 2014-09-01 05:18:41

+0

嗯。我也在Win7-64上,這對我來說工作得很好。我剛剛創建了一個腳本,每秒調用一次該函數10秒,並將返回值寫入文本文件。然後我運行腳本,幾秒鐘後鎖定計算機,然後輸入密碼解鎖計算機。在鎖定計算機的時間內,IsLocked()返回「True」,否則返回False。 – Bond 2014-09-01 13:43:57

+0

對不起,再次檢查,它的工作 – 2014-09-02 15:16:19

0

爲多個用戶登錄的工作解決方案!
不工作的遠程用戶...溶液WIP

dim islocked 

do 
    call checklock 
loop while islocked = 0 


'================================= 
'Functions 
'================================= 

function checklock 
    Dim computer : computer = "." 

    If WScript.Arguments.Count = 1 Then 
     computer = WScript.Arguments(0) 
    End If 

    If locked(computer) Then 
     msgbox "debugging: locked" 
    Else 
     msgbox "debugging: not locked" 
     wscript.sleep 3000 'for debugging - allow time to enter lock screen 
    End If  
end function 


Function locked(computer) 
    Dim wmi : Set wmi = GetObject("winmgmts://" & computer & "/root/cimv2") 
    Dim lockapp_count : lockapp_count = wmi.ExecQuery ("SELECT * FROM Win32_Process WHERE Name = 'lockapp.exe'").Count 
    Dim explorer_count : explorer_count = wmi.ExecQuery ("SELECT * FROM Win32_Process WHERE Name = 'explorer.exe'").Count 
    locked = (lockapp_count >= explorer_count) 
End Function 

其他細節問題的背景:
解ISSUE(機瓦特/多個用戶) 直到我加入另一用戶到我使用這一段時間機器。現在,當OTHER用戶鎖定了他們的屏幕時,即使我的屏幕處於活動狀態,但未鎖定,VBS表示它已被鎖定,B/logonUI.exe正在運行 - 因此會引發誤報。這也是棘手的B/C過程是由系統而不是由用戶運行,所以你不能做一個交叉檢查。但我確實想知道,如果您可以統計lockapp.exe進程的數量並與logonui.exe進程的數量進行比較。但是 - 我不知道他們是否一對一。

WIP解決方案 - 這被發現工作 - 耶 - 解決方案和代碼移動到我的評論的頂部。 計算活動用戶數並將計數與logonui.exe進程數進行比較。爲此,我試圖計算找到了多少次explorer.exe,然後比較logonui.exe實例的數量。

失敗的解決方案1:
比較logonui.exelockapp.exe計數 理性的數 - 這些都要一起去,我是假設你永遠只能得到1個logonui過程,但多lockapp過程;錯誤的假設。

相關問題