Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Explorer mit CreateProcessWithLogonW starten

  Alt 16. Mär 2005, 23:53
Mit Folgender Routine starte ich einen Prozess unter einem anderen Benutzernamen:
Delphi-Quellcode:
function CreateProcessAsLogon(const User, PW, Application, CmdLine:
  WideString):
  LongWord;
var
  si: TStartupInfoW;
  pif: TProcessInformation;
  s: WideString;
begin
  ZeroMemory(@si, sizeof(si));
  si.cb := sizeof(si);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := 1;

  SetLastError(0);

  if CmdLine = 'then
    s := Application
  else
    s := Application + ' "' + CmdLine + '"';

  CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW),
    {LOGON_WITH_PROFILE} 0, nil, PWideChar(s), CREATE_DEFAULT_ERROR_MODE, nil,
      nil, @si, @pif);
  Result := GetLastError;
end;
Richtet euer Augenmerk mal auf den Parameter dwLogonFlags. Doirt steht im Moment: {LOGON_WITH_PROFILE} 0. So starte ich den Explorer mit LOGON_WITH_PROFILE, wird er auch gestaret. Nur leider zeigt er dann folgendes Verhalten: Explorer aktualisiert nicht mehr automatisch.
So jetzt habe ich herausgefunden, dass wenn ich ihn über die Eingabeaufvorderung so: runas /noprofile /user:Administrator explorer starte, obiges Verhaltenn icht zeigt und sofort aktualisiert, wie er soll. Ergo habe ich den Paramter entsprechen von LOGON_WITH_PROFILE nach 0 geändert. Nur jetzt startet er gar nicht mehr. Was Regedit aber tut.

Und jetzt die Preisfrage? Wie kann ich den Explorer mit CreateProcessWithLogonW starten ohne dass er das Profil läd, damit er eben auch ohne drücken von F5 aktualisiert?

[edit=Christian Seehase]URL-Tag korrgiert Mfg, Christian Seehase[/edit]
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat