![]() |
lpEnvironment-Parameter bei CreateProcessWithLogonW
Ich hoffe das ich meine Frage im richtigen Bereich gepostet habe. :gruebel:
Jedenfalls habe ich da mal eine Frage zu CreateProcessWithLogonW.
Delphi-Quellcode:
Und zwar gibt es da ja den Parameter lpEnvironment. Meine Vermutung geht dahin das ich damit beim Start eines Prozesses ein bestimmtes Profil bzw. eine bestimmte Umgebung vorgeben kann. Leider habe ich bis jetzt noch nichts brauchbares gefunden wie ich diesen Parameter verwenden oder gar ermitteln kann.
function CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword: LPCWSTR;
dwLogonFlags: DWORD; lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR; dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR; const lpStartupInfo: STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall; Kann mir da jemand mal ein bisschen Hilfestellung zur Verwendung & Ermittlung dieses Parameters geben? |
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Das PSDK, dein Freund und Helfer :thumb:
Zitat:
![]() |
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Danke Daniel, das hatte ich in der OH auch schon gelesen. Das Problem ist das ich nicht so wirklich weiss wie ich das verarbeiten kann (absolut miserable Englischkenntnisse), zumal ich mit Pointern sowieso auf Kriegsfuss stehe. :-(
|
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Ah, ok. Ich friemel mal im Laufe des Tages was für dich zusammen.
|
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Das wäre wirklich super. Vielen Dank. :-)
|
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Liste der Anhänge anzeigen (Anzahl: 1)
So... Hab's endlich geschafft. Rein von der Syntax her ist es völlig in Ordnung. Obs auch tatsächlich funktioniert, konnte ich natürlich nicht testen. Wenn du Fragen hast, einfach Posten.
:party: |
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Vielen Dank für deine Mühe :-D das Problem war die Verwendung des lpEnvironment-Parameters wenn er nicht auf nil gesetzt wird.
Hast du da vielleicht auch noch eine Idee? |
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Wo liegt denn dein Problem? Entweder du benutzt AnsiString oder du benutzt WideString. Bei WideString mußt du CREATE_UNICODE_ENVIRONMENT bei den Flags setzen.
Dann setzt du deine Variablen zB so wie du willst:
Delphi-Quellcode:
Wichtig, am Ende muß immer 2mal #0 stehen!!!
var s : WideString;
// ^--- kann auch AnsiString sein, der Code bleibt gleich! // Bis auf CREATE_UNICODE_ENVIRONMENT natürlich ;) begin s := 'PATH=C:\Programme'; s := s + #0; // Aktuelle Variable abschließen // Nächste Variable s := s + 'BLA=BLUBB'; s := s + #0; // Aktuelle Variable abschließen // Zuguterletzt den Block abschließen ... s := s + #0; end; Hoppala, das wichtigste vergessen: Danach übergibst du auf diesen String einen Pointer (genauergesagt auf das erste Zeichen!)
Delphi-Quellcode:
vermutlich geht auch
lpEnvironment := Pointer(@s[1]);
Delphi-Quellcode:
(also ohne Pointer-Typecast)
lpEnvironment := @s[1];
Noch'n Nachtrag: Wenn du eine Kopie eines anderen Environment Blocks machen willst, benutzt du, wie oben schon gesagt, ![]() EDIT4: Sorry, hatte einen Bug, natürlich werden die nächsten Variablen an den String angehangen ;) |
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe jetzt mal versucht es mit CreateEnvironmentBlock hinzubekommen. Leider erhalte ich beim Versuch die Anwendung zu starten lauter Zugriffsverletzungen. Ich habe das Testprojekt mal angehangen, vielleicht kann mir jemand sagen was ich da falsch mache :gruebel:
|
Re: lpEnvironment-Parameter bei CreateProcessWithLogonW
Versuche doch erst einmal CreateProcessWithLogonW() überhaupt zum Laufen zu bringen. Achte dabei auf den Typ der Parameter und verwende wo es geht defaults. Wenn der Code dann läuft, dann können wir über deine Vorstellungen zum Environment diskutieren. Ich glaube nämlich nicht, dass der Basiscode schon funktioniert.
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr. |
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