Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Ein gültiges Token für CreateProcessAsuser bekommen (https://www.delphipraxis.net/29502-ein-gueltiges-token-fuer-createprocessasuser-bekommen.html)

Motzi 12. Sep 2004 12:15

Re: Ein gültiges Token für CreateProcessAsuser bekommen
 
Das Problem warum das Code-Beispiel so lang ist ist was anderes. Man kann über lpStartupInfo festlegen welcher WindowStation/Desktop ein Prozess zugeordnet wird. Allerdings muss der Benutzer bzw die LogonSession des Benutzers unter dem der Prozess lauft auch Zugriff auf die jeweilige WindowStation und den Desktop haben. Und damit das auch der Fall ist müssen die DACLs entsprechend angepasst werden...

Ich empfehle zu diesem Thema "Programming Windows Security" von Keith Brown.

Edit: schau dir mal das an: http://www.pluralsight.com/keith/sec.../cmdasuser.zip
da is alles drinnen was du brauchst um einen Prozess unter einem anderen Benutzer zu starten..!

Luckie 12. Sep 2004 13:07

Re: Ein gültiges Token für CreateProcessAsuser bekommen
 
Danke, ich werde es mir mal ankucken.

toyoman 17. Nov 2004 08:52

Re: Ein gültiges Token für CreateProcessAsuser bekommen
 
Zitat:

Zitat von SleepyMaster
Hmm also ich mach das immer so:

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';

function StartProgramm(Benutzer:string;Passwort:string;Domain:string;EXE:string):boolean;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  result:=false;
  FillChar (StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  if CreateProcessWithLogonW(StringToOleStr(Benutzer),StringToOleStr(Domain), StringToOleStr(Passwort), 0, StringToOleStr(Exe), nil, 0, nil, nil, StartupInfo, ProcessInfo) then
    result:=true;
end;
Hoffe das war auch das was gesucht war.

Warum kann man bei dieser Funktion nicht Programme mit Parametern starten?????? :wall:

jim_raynor 17. Nov 2004 08:58

Re: Ein gültiges Token für CreateProcessAsuser bekommen
 
Ist nicht der Paramater nach der EXE-Datei die Paramater?

toyoman 17. Nov 2004 08:59

Re: Ein gültiges Token für CreateProcessAsuser bekommen
 
Zitat:

Zitat von jim_raynor
Ist nicht der Paramater nach der EXE-Datei die Paramater?

wenn ich notepad.exe starte funktionierts.

sobald ich aber einen Parameter anhänge zb.: notepad.exe readme.txt läuft das programm nicht mehr an.

warum? eine ahnung?

Luckie 8. Jan 2005 15:44

Re: Ein gültiges Token für CreateProcessAsuser bekommen
 
So, es geht einfach nicht, weil man die nötigen Privilegien nicht aktivieren kann. Ab 2000 gibt es aber CreateProcessWithLogonW und das kann das. Es muss also native API-Funktionen geben, die das ermöglichen. mal sehen, ob ich in dieser Richtung weiterkomme. :? Wer was weiß, nur zu, bitte melde dich.

toyoman 8. Jan 2005 15:53

Re: Ein gültiges Token für CreateProcessAsuser bekommen
 
Zitat:

Zitat von Luckie
So, es geht einfach nicht, weil man die nötigen Privilegien nicht aktivieren kann. Ab 2000 gibt es aber CreateProcessWithLogonW und das kann das. Es muss also native API-Funktionen geben, die das ermöglichen. mal sehen, ob ich in dieser Richtung weiterkomme. :? Wer was weiß, nur zu, bitte melde dich.

hey luckie

mein programm läuft längst, habe das problem gelöst.
allerdings hab ich immer noch ferien.
ab montag bin ich wieder im büro und könnte nachgucken wie der source endgültig aussah :)

gruss

Luckie 8. Jan 2005 15:58

Re: Ein gültiges Token für CreateProcessAsuser bekommen
 
Mit CreateProcessWithLogonW ist es ja auch kein Problem, sie dazu mein RunAsUser. Und das mit den paramtermn ist auch kein Problem. Nur gibt es eben diese API nur ab Windows 2000 und wird nicht unter Windows NT funktionieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
Seite 2 von 2     12   

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