2012-01-10 33 views
3

私は数年前から使用していたスクリプトの作者によってこの方向を指摘されました。Windows 7で画面をリモートロックするスクリプト

これは、デスクトップのリモートロックを許可し、Windows XPではローカルとリモートで正常に動作し、Windows 7ではローカルで正常に動作しますが、Windows 7マシンに対してリモートで使用しようとすると動作しません。 これは数年前から大変役に立ちましたが、非常に便利でしたが、最近Windows 7マシンをサイトに導入し始めました。アップグレードが完了すると、これ以上使用することはできません。

私が持っているsame questionは数年前にポーズを取られましたが、未回答でした。ここ
はVBSコードです:私のWin7の64ビットにrundll32.exe user32.dll,LockWorkStationを実行

' 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/archive/2004/01/15/58973.aspx)。 Rundll32.exeは、誤った署名を持つため、 'LockWorkStation'関数を呼び出すつもりはありませんでした。今はそれを修正するのに良い時期です。 –

+0

リンクと編集コーディーをありがとう、私はrundll32を呼び出すことは良いアイデアではなかったが、今までのところ理解していないと思っていました。 –

+0

@Cody Grey:LockWorkStationはパラメータを必要としないので、rundll32.exeが必要以上に多くのパラメータを渡しても問題ありません。 –

答えて

1

は、画面をロックするので、これはかなりOKらしいです。 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コマンドはリモートでは動作しませんが、ローカルでも問題ありません。 –

+0

rundll32.exeコマンドはローカルで実行する必要があります。スクリプトやバッチファイルをリモートマシンにコピーして実行すると動作します。 – Nilpo

+0

私はターゲットマシンにスクリプトをコピーし、psexec \\ targetmachine cmdを使って私はそれをマシンから実行し、Windows 7では動作しませんが、XPは正常です。 –

1

これは、リモートのWindows 7 x64システムで私のために働いている:

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

よろしく

関連する問題