AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CreateProcessWithTokenW ERROR_DEVICE_NO_RESOURCES
Thema durchsuchen
Ansicht
Themen-Optionen

CreateProcessWithTokenW ERROR_DEVICE_NO_RESOURCES

Ein Thema von Memnarch · begonnen am 30. Aug 2013 · letzter Beitrag vom 2. Sep 2013
Antwort Antwort
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

CreateProcessWithTokenW ERROR_DEVICE_NO_RESOURCES

  Alt 30. Aug 2013, 15:51
Hallo,
Ich habe nen verzwicktes Problem und bisher hat nichts geholfen.

Was ich erreichen möchte(oder besser gesagt MUSS, ist so vorgegeben )

Ich möchte ein programm mithilfe von zuvor angegebenen Logindaten unter einem anderen Benutzer ausführen. Dabei kann dies entweder aus einem Nutzerkontext oder Servicekontext pasieren.

Ich bearbeite gerade den Usecase das ich versuche von NutzerA mit NutzerB ein Programm auszuführen.
Bei ausführen mit CreateProcessWithTokenW wird das Programm gestartet(CreateProcessWithTokenW meldet erfolg), windows wirft aber sofort die im Titel erwähnte Fehlermeldung(Code 0.x142)

das wäre der Rohbau der aktuell den Fehler wirft:
(Dummycode)
Delphi-Quellcode:
  ZeroMemory(@Startup, SizeOf(Startup));
  Startup.cb := SizeOf(Startup);
  ZeroMemory(@Process, SizeOf(Process));
  LogonUserW(Name, Domäne,
    Passwort, LOGON32_LOGON_INTERACTIVE,
    LOGON32_PROVIDER_DEFAULT, Token);
  CreateEnvironmentBlock(@Umgebungsblock, Token, False);
  CreateProcessWithTokenW(Token, LOGON_WITH_PROFILE,
            nil, @PfadZurExe[1],
            CREATE_NEW_CONSOLE or CREATE_UNICODE_ENVIRONMENT or CREATE_DEFAULT_ERROR_MODE,
            Umgebungsblock, nil, @Startup, @Process);
Jemand eine Idee?

MFG
Memnarch
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: CreateProcessWithTokenW ERROR_DEVICE_NO_RESOURCES

  Alt 30. Aug 2013, 18:11
Habe ich das richtig verstanden: Der Prozess wird erzeugt und CreateProcessWithToken meldet TRUE, aber GetLastError ist ERROR_DEVICE_NO_RESOURCES? Bei Erfolg eines API Aufrufs ist GetLastError nicht eindeutig definiert, von daher würde ich mir keine Gedanken machen, sofern die Process Creation ansich funktioniert.

Ansonsten musst du beachten, dass dein Prozess diverse Privilegien benötigt. Hier der Auszug aus dem MSDN:
Zitat:
The process that calls CreateProcessWithTokenW must have the SE_IMPERSONATE_NAME privilege. If this function fails with ERROR_PRIVILEGE_NOT_HELD (1314), use the CreateProcessAsUser or CreateProcessWithLogonW function instead. Typically, the process that calls CreateProcessAsUser must have the SE_INCREASE_QUOTA_NAME privilege and may require the SE_ASSIGNPRIMARYTOKEN_NAME privilege if the token is not assignable. CreateProcessWithLogonW requires no special privileges, but the specified user account must be allowed to log on interactively. Generally, it is best to use CreateProcessWithLogonW to create a process with alternate credentials.
Dort wird auch empfohlen, eher CreateProcessWithLogon zu verwenden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: CreateProcessWithTokenW ERROR_DEVICE_NO_RESOURCES

  Alt 31. Aug 2013, 02:16
Der Fehlercode wird von Windows in einem Error Dialog angezeigt. Ist also kein GetLastError.

CreateProcessWithLogon ist keine Option, in einem Service ist es nicht verfügbar (es wäre schöner eine Lösung anstatt mehrere zu haben).
AH bei dir steht das SE_IMPERSONATE_NAME für CreateProcessWithToken benötigt wird. Das bekomm ich sicherlich noch hin(wie ich die Privilegien setzen kann habe ich schon raus).

Was immer funktioniert hat war LOGON32_LOGON_BATCH bei LogoinUser. Dann liefen die Programme, aber halt ohne Fenster^^
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: CreateProcessWithTokenW ERROR_DEVICE_NO_RESOURCES

  Alt 31. Aug 2013, 11:20
Mit dem SE_IMPERSONATE_NAME musst du aufpassen. Das Privileg steht dir standardmäßig nur auf Administratorkonten zur Verfügung.

Da tatsächlich eine Fehlermeldung erscheint, CreateProcessWithToken aber erfolgreich ist, vermute ich, dass die Meldung im Prozess geschmissen wird, den du versuchst zu starten. Hast du mal versucht einfach nur notepad.exe oder etwas Vergleichbares zu starten?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#5

AW: CreateProcessWithTokenW ERROR_DEVICE_NO_RESOURCES

  Alt 31. Aug 2013, 12:21
Genau die tun das (Notepad, MSPaint, ALLE, auch selbst geschriebene kleine programme)

Die Meldung die ich bekomme heißt soviel wie, dass benötigte Dateien nicht gefunden wurden. Das macht aber keinen Sinn. Hat der irgendwie keine Umgebungsvariablen zum suchen der DLLs oder sontigen sachen o.O?
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: CreateProcessWithTokenW ERROR_DEVICE_NO_RESOURCES

  Alt 1. Sep 2013, 17:32
Du könntest es mal mit CreateProcessAsUser probieren. Das funktioniert auf jeden Fall auch aus einem Service heraus. Hatte folgenden Code verwenden, um einen Prozess im Kontext des aktuell eingeloggten Benutzers zu erstellen (mit UAC Elevation):
http://www.delphipraxis.net/160355-s...t-starten.html
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 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