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

juhuu32 21. Jul 2004 07:25


RunAs
 
Hallo zusammen,
ich hab' den folgenden Code bei SwissDelphiCenter.ch gefunden.
Das ganze funktioniert wunderbar mit dem unteren Aufruf aber es
erscheint das Konsolenfenster und bleibt so lange aktiv bis
CACLS abgearbeitet ist. Kann ich das "aufgerufene" Programm
irgendwie unsichtbar machen?

Besten Dank

juhuu32



Delphi-Quellcode:
uses
  JwaWinBase; ( [url]http://members.chello.nl/m.vanbrakel2/[/url] )

//...

procedure TForm1.Button1Click(Sender: TObject);
var
  si: STARTUPINFOW;
  pif: PROCESS_INFORMATION;
  res: Bool;
  s: string;
begin
  //erstmal die StartUpInfoW setzen
  //set StartUpInfoW first
  si.cb := SizeOf(startupinfow);
  si.dwFlags := STARTF_USESHOWWINDOW;
  [b]si.wShowWindow := SW_HIDE; [/b]
  si.lpReserved := nil;
  si.lpDesktop := nil;
  si.lpTitle := 'Konsole';

  // dann CreateProcessWithLogonW ausführen...
  // run CreateProcessWithLogonW...
  [b]res := CreateProcessWithLogonW('USER', 'DOMAIN', 'PASSWORD', LOGON_WITH_PROFILE,
    nil, 'CACLS.EXE C:\TEST /P Benutzer:C'
    , CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pif); [/b]
  if booltostr(res) = '0' then
  begin
    //wenn ein Fehler auftritt, soll der Fehlercode ausgegeben werden
    //über 'net helpmsg ' in der Kommandoeingabeaufforderung
    //kann dieser entziffert werden

    //if an error occures, show the error-code
    //this code can be 'translated' with 'net helpmsg ' on command-prompt
    str(GetLastError, s);
    ShowMessage('CreateProcessWithLogonResult: ' + booltostr(res) + #10 + 
      'GetLastError: ' + s);
  end;
end;
// Verbesserungen gerne als Mail an mich!

[edit=Sharky]Delphi-Tags gesetzt. Antworten grundsätzlich hier im Forum!! Mfg, Sharky[/edit]

Christian Seehase 23. Jul 2004 16:23

Re: RunAs
 
Moin Juhuu,

probier mal nicht cacls direkt aufzurufen, sondern über eine Konsole (cmd.exe /c <BEFEHL>).


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