Einzelnen Beitrag anzeigen

Fisti

Registriert seit: 9. Jan 2009
14 Beiträge
 
#1

CreateProcessWithLogonW Aufruf mit Übergabeparameter

  Alt 4. Aug 2009, 16:34
Hallo zusammen

Ich habe ein Problem mit dem CreateProcessWithLogonW Aufruf.

Mein Code sieht folgendermassen aus:

Delphi-Quellcode:
function CreateProcessWithLogonW(
  lpUsername,
  lpDomain,
  lpPassword:PWideChar;
  dwLogonFlags:dword;
  lpApplicationName: PWideChar;
  lpCommandLine: PWideChar;
  dwCreationFlags: DWORD;
  lpEnvironment: Pointer;
  lpCurrentDirectory: PWideChar;
  const lpStartupInfo: tSTARTUPINFO;
  var lpProcessInformation: TProcessInformation): BOOL; stdcall; external 'advapi32.dll';


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  //Variante 1
  cFileName = 'C:\WINDOWS\NOTEPAD.EXE';
  //Variante 2
  cFileName = 'C:\WINDOWS\NOTEPAD.EXE "C:\Temp\test.txt"';
var
  _StartupInfo : TStartupInfo;
  _ProcessInfo : TProcessInformation;
  _lwResult : Longword;
  _WaitResult : integer;
begin

      //-- set application appearance ---
      FillChar(_StartupInfo, SizeOf(_StartupInfo), #0);
      _StartupInfo.cb := SizeOf(StartupInfo);
      _StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
      _StartupInfo.wShowWindow := 1;

      //--- create application ---
      if not CreateProcessWithLogonW( 'User'
                                      'Domain',
                                      'Password',
                                      0,
                                      cFileName,
                                      nil,
                                      CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
                                      nil,
                                      nil,
                                      _StartupInfo,
                                      _ProcessInfo)
      then begin
        _lwResult := WAIT_FAILED;
        ShowMessageFmt( 'Create Process failed <%s>', [cFileName]);
        exit;
      end;

      _WaitResult := WaitForSingleObject(_ProcessInfo.hProcess, INFINITE);
      ....
end;
Variante 1 funktioniert problemlos. Die Variante 2 mit dem Übergabeparameter funktioniert aber leider nicht.

Kann mir jemand sagen, was ich falsch mache?

Danke schon im Voraus.

Gruess Fisti
  Mit Zitat antworten Zitat