Задача по запуску 
Explorer'а из своей программы (прописанной в параметре 
Shell реестра).
Имеем:
procedure TFormRunExplorer.btRunExplorerClick(Sender: TObject);
var
  FileName : String;
  SUInfo : TStartUpInfo;
  ProcInfo : TProcessInformation;
begin
  //ShellExecute(Handle, 'open', 'explorer.exe', 'C:\Windows\system32', '', SW_SHOW);
  //WinExec(PANsiChar('TASKKILL /F /IM explorer.exe'), SW_HIDE);
  //sleep(5000);
  //ShellExecute(Handle,'open','C:\WINDOWS\Explorer.EXE',nil,nil,SW_ShowNormal);
  ZeroMemory(@SUInfo, SizeOf(TStartUpInfo));
  with SUInfo do
  begin
   cb := SizeOf(TStartUpInfo);
   dwFlags := STARTF_USESHOWWINDOW;
   wShowWindow := SW_SHOWNORMAL;
  end;
  FileName := 'Explorer.exe';
  CreateProcess(PChar('C:\\Windows\\' + FileName), nil, nil, nil, False, 0, nil, nil, SUInfo, ProcInfo);
end;
Почему в результате имеем 
проводник, а не истинный рабочий стол с 
Панелью задач/
Треем и прочим?
P.S. Обзор по 
Explorer'у:
1. Запуск explorer.exe2. EXPLORER.EXE - Строковые параметры3. Блокировка виндовс (Windows) с помощью DelphiWindows XP SP3 / Win7 Ultimate