Windows XP 시작 메뉴의 특정 요일에 종료 옵션을 사용하지 않도록 설정 한 작은 VBScript를 작성한 다음 그 다음날 다시 사용하도록 설정합니다.
스크립트는 제한된 권한의 사용자 로그인으로 실행됩니다. 이 사용자는 Windows 레지스트리를 변경할 권한이 없기 때문에 관리자 계정으로 실행해야합니다.
제한된 사용자 로그인 as explained here, point 5에서 관리자 계정의 스크립트를 실행하는 예약 된 작업을 설정했습니다.
다음과 같은 문제가 있습니다. Windows 레지스트리에 변경 사항을 적용한 후에 변경 사항을 적용하려면 해당 사용자의 explorer.exe를 다시 시작해야합니다. 내 스크립트가이 작업을 수행하지 않습니다. explorer.exe를 죽일 수는 있지만 어떤 이유로 다시 시작할 수 없습니다.
관리자 계정에서 스크립트를 직접 실행하여 관리자 계정의 레지스트리 설정을 변경하고 관리자 계정 explorer.exe를 다시 시작하면 스크립트가 완벽하게 작동합니다.
다음은 코드의 일부입니다 :VBScript - 다른 사용자의 explorer.exe 다시 시작
Option Explicit
Const RegKey = "HKEY_USERS\LIMITED USER SID HERE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoClose"
Const BackupDay = 5 'sunday = 1
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
If Weekday(Date) = BackupDay Then
If WshShell.RegRead(RegKey) = 0 Then
WshShell.Run "msg * __Message Here__"
Wscript.Sleep 500
WshShell.RegWrite RegKey, 1, "REG_DWORD"
RestartExplorer1
' RestartExplorer2
WScript.quit
Else
[...]
Sub RestartExplorer1()
Dim strComputer, strProcessToKill, objWMIService, colProcess, objProcess
strComputer = "."
strProcessToKill = "explorer.exe"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer _
& "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & strProcessToKill & "'")
For Each objProcess in colProcess
objProcess.Terminate()
Next
End Sub
RestartExplorer1 포함한 모든 Explorer.exe에서 프로세스 (죽일해야
절차 관리자의 하나 그가 그렇게 로그 오프해야한다, 그것은 괜찮아요 하나만 있으면 안되며, 사용자 이름별로 걸러 낼 수 있고 사용자의 계정 만 죽일 수는 있지만 문제는 아닙니다.) 관리자 계정에서 예약 된 작업을 실행하면 아무런 문제가 없습니다. 실제로 사망이 경우 explorer.exe를에
Sub RestartExplorer2()
WshShell.Run "cmd /c Taskkill /F /IM explorer.exe"
WScript.Sleep 500
WshShell.Run "cmd /c Start explorer.exe"
End Sub
하지만 어떤 이유로이 다시 시작되지 않습니다 :
RestartExplorer2은 더 좋은 행운이 없습니다.
아무 결과없이 검색했습니다.
도움을 주시면 대단히 감사하겠습니다. 감사합니다.
안녕 Nilpo, 도와 주셔서 감사합니다. 불행히도 runas는 내 문제에 대한 해결책이 아니며 이미 결과없이 이러한 방식으로 시도했습니다. – Giovanni