Also die ganze Sache funktioniert einwandfrei. Ist nur ein bisschen was zu beachten, ich poste den Quellcode meines Testprogramms, der ist selbsterklärend und so funktioniert alles:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Reg : TRegistry;
begin
reg := TRegistry.Create;
//Erst den Shell wieder zurücksetzten!!!
with reg
do
begin
try
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('
Software\Microsoft\Windows NT\CurrentVersion\Winlogon', true);
WriteString('
Shell', '
Explorer.exe');
finally
showmessage('
Done');
reg.Free;
end;
try
ShellExecute(0,
//Dann den Explorer starten!
Nil,
PChar('
C:\winnt\explorer.exe'),
Pchar('
'),
Pchar('
'),
SW_NORMAL);
finally
close;
end;
end;
Wenn der Explorer nicht zuerst als Shell wieder registriert wurde, öffnet er lediglich die Eigenen Dateien!!!