AGB  ·  Datenschutz  ·  Impressum  







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

lpEnvironment-Parameter bei CreateProcessWithLogonW

Ein Thema von ringli · begonnen am 30. Jul 2005 · letzter Beitrag vom 2. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#1

lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 30. Jul 2005, 23:44
Ich hoffe das ich meine Frage im richtigen Bereich gepostet habe.

Jedenfalls habe ich da mal eine Frage zu CreateProcessWithLogonW.

Delphi-Quellcode:
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;
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.

Kann mir da jemand mal ein bisschen Hilfestellung zur Verwendung & Ermittlung dieses Parameters geben?
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#2

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 31. Jul 2005, 00:09
Das PSDK, dein Freund und Helfer

Zitat von Das PSDK:
lpEnvironment
[in] Pointer to an environment block for the new process. If this parameter is NULL, the new process uses the environment of the specified user instead of the environment of the calling process.
An environment block consists of a null-terminated block of null-terminated strings. Each string is in the form:

name=value

Because the equal sign is used as a separator, it must not be used in the name of an environment variable.

An environment block can contain Unicode or ANSI characters. If the environment block pointed to by lpEnvironment contains Unicode characters, be sure that dwCreationFlags includes CREATE_UNICODE_ENVIRONMENT.

Note that an ANSI environment block is terminated by two zero bytes: one for the last string, one more to terminate the block. A Unicode environment block is terminated by four zero bytes: two for the last string, two more to terminate the block.

To retrieve a copy of the environment block for a given user, use the CreateEnvironmentBlock function.
Und dann brauchst du das:

MSDN-Library durchsuchenCreateEnvironmentBlock
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 31. Jul 2005, 00:15
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.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#4

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 31. Jul 2005, 12:33
Ah, ok. Ich friemel mal im Laufe des Tages was für dich zusammen.
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 31. Jul 2005, 12:45
Das wäre wirklich super. Vielen Dank.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#6

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 31. Jul 2005, 23:23
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.

Angehängte Dateien
Dateityp: zip cpwlw_demo_825.zip (227,2 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 1. Aug 2005, 06:42
Vielen Dank für deine Mühe das Problem war die Verwendung des lpEnvironment-Parameters wenn er nicht auf nil gesetzt wird.

Hast du da vielleicht auch noch eine Idee?
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 1. Aug 2005, 10:07
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:
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;
Wichtig, am Ende muß immer 2mal #0 stehen!!!

Hoppala, das wichtigste vergessen: Danach übergibst du auf diesen String einen Pointer (genauergesagt auf das erste Zeichen!)lpEnvironment := Pointer(@s[1]); vermutlich geht auchlpEnvironment := @s[1]; (also ohne Pointer-Typecast)

Noch'n Nachtrag: Wenn du eine Kopie eines anderen Environment Blocks machen willst, benutzt du, wie oben schon gesagt, MSDN-Library durchsuchenCreateEnvironmentBlock()!

EDIT4: Sorry, hatte einen Bug, natürlich werden die nächsten Variablen an den String angehangen
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
504 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 1. Aug 2005, 18:49
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
Angehängte Dateien
Dateityp: zip lpenvironment-test_996.zip (4,4 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: lpEnvironment-Parameter bei CreateProcessWithLogonW

  Alt 1. Aug 2005, 21:03
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:36 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