Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Explorer mit CreateProcessWithLogonW starten (https://www.delphipraxis.net/42294-explorer-mit-createprocesswithlogonw-starten.html)

Luckie 16. Mär 2005 23:53


Explorer mit CreateProcessWithLogonW starten
 
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]

Piro 6. Dez 2015 14:43

AW: Explorer mit CreateProcessWithLogonW starten
 
Moin,

Der Thread ist etwas älter aber gerade sehr interessant für mich.

Hast du es hinbekommen den Explorer ordentlich zu starten?

Ich bekomme ihn gar nicht erst gestartet.

Wäre dir sehr dankbar für deine Lösung falls du eine hast.

Vielen Dank im Voraus b
Sven

himitsu 6. Dez 2015 14:56

AW: Explorer mit CreateProcessWithLogonW starten
 
Die Explorer.exe ist doch nicht nur für den "File Explorer" da, sondern sie enthält auch die Taskleiste, wenn es die erste Instanz dieser Anwendung ist.
Es gibt also irgendwie ein Single-Instance-Verhalten und das könnte doch dafür verantwortlich sein, daß es nicht "mehrmals" gestartet wird?

Und das mit dem "aktualisiert" kenn ich auch so, von "normal" gestarteten Explorern, auf einigen Rechnern, was echt nervig sein kann.

Luckie 6. Dez 2015 16:42

AW: Explorer mit CreateProcessWithLogonW starten
 
Zitat:

Zitat von himitsu (Beitrag 1323535)
Die Explorer.exe ist doch nicht nur für den "File Explorer" da, sondern sie enthält auch die Taskleiste, wenn es die erste Instanz dieser Anwendung ist.

Fast. Der Desktop is auch nur ein Explorer bzw. ein Listview.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz