Einzelnen Beitrag anzeigen

Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: CreateProcessWithLogonW mit Parameters ?

  Alt 17. Sep 2009, 13:35
Zitat von Luckie:
Was heißt "geht nicht"?
Hab grad was seltsames Festgestellt: Wenn ich für lpApplicationName den Pfad und Name der exe Datei angebe und für lpCommandLine die Parameter, dann scheints doch zu klappen... Jedoch nicht bei der Datei die ich testen wollte!

Ich versuchte eine Netzwerkkartentreiber Setup mit dem Parameter /s durchzuführen, das klappte nicht ->
Es gab kein fehler aber es passierte auch sonst nichts. Wenn ich den Parameter weglasse startet das Setup, aber eben nicht silent.

Wenn ich notepad starte, kann ich einen Dateipfad als Parameter mitgeben und da funktioniert es, es startet notepad mit der angegebenen Datei.

Is ja oberkomisch...
Hier mal ein Ausschnitt des Programms: (Hab auch noch die ganze Source hochgeladen)

Aufruf:
Delphi-Quellcode:
    if ExtractFilePath(ParamStr(4)) = 'then
      COMMANDLINE:=PWideChar(ExtractFilePath(ParamStr(0))+ParamStr(4))
    else
      COMMANDLINE:=PWideChar(ParamStr(4));

    for I := 5 to ParamCount do
      PARAMS := PWideChar(String(PARAMS) + ' ' + ParamStr(I));

    WriteLn('"'+String(COMMANDLINE)+String(PARAMS) +'"');

    USER:=PWideChar(ParamStr(1));
    DOMAIN:=PWideChar(ParamStr(2));
    PW:=PWideChar(ParamStr(3));

    if not runas(USER, DOMAIN, PW, COMMANDLINE, PARAMS) then
    begin
      WriteLn(PChar(SysErrorMessage(GetLastError)));
    end;
Funktion:
Delphi-Quellcode:
function Runas(USER,DOMAIN,PW,COMMANDLINE,PARAMS:PWideChar):boolean;

const
  LOGON_WITH_PROFILE = $00000001;

function CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword: PWideChar;
  dwLogonFlags: dword; lpApplicationName, lpCommandLine: PWideChar;
  dwCreationFlags: dword; lpEnvironment: pointer;
  lpCurrentDirectory: PWideChar; lpStartupInfo: PStartUpInfoW;
  lpProcessInfo: PProcessInformation): boolean; stdcall;
  external 'advapi32.dll';

implementation

function Runas(USER,DOMAIN,PW,COMMANDLINE,PARAMS:PWideChar):boolean;
var
  si : TStartupInfoW;
  pif : TProcessInformation;

begin

  ZeroMemory(@si,sizeof(si));
  si.cb := sizeof(si);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := 1;

  if DOMAIN <> 'nilthen
  begin
    result := CreateProcessWithLogonW(USER,DOMAIN,
      PW,LOGON_WITH_PROFILE,
      COMMANDLINE, PARAMS,
      CREATE_DEFAULT_ERROR_MODE,nil,nil,@si,@pif);
  end
  else
  begin
     result := CreateProcessWithLogonW(USER,nil,
      PW,LOGON_WITH_PROFILE,
      COMMANDLINE, PARAMS,
      CREATE_DEFAULT_ERROR_MODE,nil,nil,@si,@pif);
  end;

end;
Angehängte Dateien
Dateityp: rar erunas_110.rar (70,3 KB, 30x aufgerufen)
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat