Windows Explorer durch ein anderes Programm ersetzen

9. Oktober 2006 14:47

Ich musste heute für einen bestimmten Account die normale Windows Shell (Explorer.exe) durch ein anderes Programm ersetzen. Das Verhalten sollte dabei derart sein, das beim beenden dieses anderen Programmes der Account direkt abgemeldet wird.

Zunächst braucht man dazu ein kleines Programm, das die "eigentliche" Shell startet, darauf wartet das der Shell-Prozess beendet wird, und dann den Abmeldevorgang einleitet. Sowas kann man zum Beipiel als Skript anlegen:

REM Starten
StartProcessAndWait "ZuStartendesProgramm.exe"

REM Abmelden
Set oOS = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
For Each oOperatingSystem in oOS
   oOperatingSystem.Win32Shutdown(4)
Next

Function StartProcessAndWait( processName)
   Set objWMIService = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
   errResult = objWMIService.Create("C:\temp\" & processName, "C:\temp\", null, intPosID)
   Set objWait = GetObject("winmgmts:\\.\root\cimv2")
   Set colProcesses = objWait.ExecNotificationQuery("Select * From __InstanceDeletionEvent " & "Within 1 Where TargetInstance ISA 'Win32_Process'")
   mustWait = true
   Do while mustWait
      Set objProcess = colProcesses.NextEvent
      If objProcess.TargetInstance.ProcessID = intPosID Then
          mustWait = false
      End If
   Loop
   StartProcessAndWait = true
End Function

Jetzt braucht man nur noch einen Eintrag in der Registry, der sich darum kümmert, das dieses Skript (nennen wir es "shell.vbs") startet. Der findet sich unter

HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon

Der Key hat den Namen "Shell" und als Wert (für dieses Beispiel) "cscript c:\temp\shell.vbs"

Kommentare

18.01.2008 11:25:12 #

Hallo Thomas,

Ein sehr hilfreicher Eintrag. Ich suche Informationen zur folgenden Problemlösung:
ist es möglich einen Benutzer xy eine eigene shell zuzordnen und dem Administrator trotdem den explorer.exe? Wenn ja, welchen Registry schlüssel sollte man anpassen?

Schöne grüsse
bjanko

bjanko

18.01.2008 11:36:15 #

Wenn man es so tut wie ich es beschrieben habe, dann erhlt der user der angemeldet ist, wenn man den letzten arbeitsschritt durchführt die neue shell: andere user behalten die normale.

Thomas Woelfer

24.12.2009 02:11:37 #

das script geht ein bisserl einfacher mit einer .bat datei:
@echo off
ZuStartendesProgramm.exe
logoff /n

woran ich mir aber gerade die zähne ausbeisse ist selbiges für das GASTkonto, nur das hinterher nicht ausgeloggt werden soll sondern HERUNTERGEFAHREN werden soll.
ich war in der hoffnung mit deinem script geht das, aber da fehlt mir noch was.
kann mir wer weiterhelfen?

simple

Kommentare sind geschlossen

Kalender

<<  Mai 2012  >>
MoDiMiDoFrSaSo
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar