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 RunAs /netonly (https://www.delphipraxis.net/74277-runas-netonly.html)

ringli 31. Jul 2006 19:39


RunAs /netonly
 
Weiss jemand zufällig wie der Windows-eigene Befehl "runas /netonly" intern funktioniert? Bisher bin ich davon ausgegangen das ich bei CreateProcessWithLogonW einfach nur das Logon-Flag von LOGON_WITH_PROFILE auf LOGON_NETCREDENTIALS_ONLY ändern muss. Leider scheint das aber nicht zu reichen.

Ein Anwender meines Programmes (ist etwas in der Art wie Luckies RunAsUser) hat mir geschrieben das es zwar mit dem "/netonly"-Parameter beim Windows-eigenen RunAs funktioniert, aber wenn er mein Programm verwendet und die Checkbox für LOGON_NETCREDENTIALS_ONLY setzt funktioniert es nicht mehr. Deshalb meine Vermutung das Microsoft da noch etwas mehr macht als nur das Logon-Flag zu ändern. Die Frage ist nur was?

Hier mal den Code den ich verwende (nur das wichtigste):
Delphi-Quellcode:
const
  LOGON_WITH_PROFILE       = $00000001;
  LOGON_NETCREDENTIALS_ONLY = $00000002;

var
  si: STARTUPINFOW;
  pif: PROCESS_INFORMATION;
begin
  // StartUpInfoW setzen
  si.cb         := SizeOf(startupinfow);
  si.dwFlags    := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  si.wShowWindow := SW_SHOWDEFAULT;
  si.lpReserved := nil;
  si.lpDesktop  := nil;
  si.lpTitle    := nil;

  // CreateProcessWithLogonW ausführen...
  CreateProcessWithLogonW('Benutzer', 'PC', 'Passwort', // Anmeldedaten
                          LOGON_WITH_PROFILE,          // Logon-Flag
                          'Irgendeine_Anwendung.exe',  // Anwendung
                          nil,                         // Parameter
                          CREATE_DEFAULT_ERROR_MODE or CREATE_UNICODE_ENVIRONMENT,
                          nil,                                    
                          nil,
                          si,
                          pif);
end;

ringli 2. Aug 2006 15:29

Re: RunAs /netonly
 
Ok, das Problem hat sich gelöst und der Code ist auch korrekt. Der Fehler bestand lediglich darin das der Anwender eine IP-Adresse angegeben hat und damit kommt die CreateProcessWithLogonW-Funktion nicht klar. Man muss also erst die IP in den entsprechenden NETBIOS-Namen umwandeln bzw. gleich den NETBIOS-Namen verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 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