2012-01-10 29 views
3

我被一個我一直使用了幾年的腳本的作者指向了這個方向。在Windows下遠程鎖定屏幕的腳本7

它允許桌面的遠程鎖定,並在Windows XP本地和遠程工作正常,並在本地的Windows 7下正常工作,但嘗試遠程使用它反對無法工作在Windows 7機器的時候。 這已經很棒了幾年了,並且非常有用,但是我們最近開始在現場部署Windows 7計算機,一旦升級完全完成,我將無法再使用它。

,我已經提出了一個幾年前,但無人接聽的same question
下面是VBS代碼:

' StartProcess.vbs 
' Sample VBScript to start a process. Inputbox for name 
' Author Guy Thomas http://computerperformance.co.uk/ 
' Version 2.2 - December 2005 
' -------------------------------------------------------' 
Option Explicit 
Dim objWMIService, objProcess 
Dim strShell, objProgram, strComputer, strExe, strInput 
strExe = "rundll32.exe user32.dll,LockWorkStation" 
' Input Box to get name of machine to run the process 
Do 
strComputer = (InputBox(" ComputerName to Run Script",_ 
"Computer Name")) 
If strComputer <> "" Then 
strInput = True 
End if 
Loop until strInput = True 

' Connect to WMI 
set objWMIService = getobject("winmgmts://"_ 
& strComputer & "/root/cimv2") 
' Obtain the Win32_Process class of object. 
Set objProcess = objWMIService.Get("Win32_Process") 
Set objProgram = objProcess.Methods_(_ 
"Create").InParameters.SpawnInstance_ 
objProgram.CommandLine = strExe 

'Execute the program now at the command line. 
Set strShell = objWMIService.ExecMethod(_ 
"Win32_Process", "Create", objProgram) 

'WScript.echo "Created: " & strExe & " on " & strComputer 
WSCript.Quit 
' End of Example of a Process VBScript 
+1

(HTTP [那VBS代碼從未真正擺在首位 「工作」]://blogs.msdn。 COM/b/oldnewthing /存檔/ 2004/01/15/58973.aspx)。 Rundll32.exe從未打算調用'LockWorkStation'函數,因爲它有錯誤的簽名。現在和解決問題一樣好。 – 2012-01-10 09:13:35

+0

感謝您的鏈接和編輯科迪,我看到有人說,打電話給rundll32這不是一個好主意,但不明白爲什麼直到現在。 – 2012-01-10 09:20:29

+0

@Cody Gray:LockWorkStation不需要任何參數,所以它不會介意rundll32.exe是否傳遞比所需參數多的參數。 – 2012-01-10 09:29:16

回答

1

在我的Win7 64位運行rundll32.exe user32.dll,LockWorkStation鎖定屏幕,所以這似乎相當確定。但看http://msdn.microsoft.com/en-us/library/windows/desktop/aa376875(v=vs.85).aspx當我只有通過 交互桌面中運行的進程讀取

的LockWorkStation功能調用。另外,用戶必須登錄,並且工作站不能被鎖定。

我對WMI沒有經驗,但我認爲WMI不會在交互式桌面上運行rundll32.exe!

+0

即使運行rundll32.exe user32。DLL,通過psexec LockWorkStation命令不能遠程工作,但本地沒關係。 – 2012-01-10 12:58:28

+0

rundll32.exe命令需要在本地執行。將腳本或批處理文件複製到遠程機器並執行它將起作用。 – Nilpo 2012-01-10 17:36:59

+0

我將腳本複製到目標機器上,並使用psexec \\ targetmachine cmd執行它,就像從機器中運行一樣,在Windows 7下它不起作用,但XP很好。 – 2012-01-11 10:17:28

1

這是爲我工作與遠程Windows 7 x64系統:

psexec.exe -accepteula \\REMOTECOMPUTERNAME -i -s %windir%\system32\rundll32.exe user32.dll,LockWorkStation 

問候