![]() |
Umgebungsvariablen unter Vista ohne Admin-Rechte
Bislang habe ich mir Umgebungsvariablen so geholt:
Delphi-Quellcode:
Als Standard-User unter Vista gibt dies nichts mehr zurück.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Registry, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1 : TEdit; Edit2 : TEdit; Button1 : TButton; Label1 : TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; Type tEnviromentOwner = (eoUser, eoSystem); var Form1: TForm1; Const cEnviromentOwnerRegPlace : Array [tEnviromentOwner] of Record Root: HKEY; Key: String End = ( (Root: HKEY_CURRENT_USER; Key: 'Environment'), (Root: HKEY_LOCAL_MACHINE; Key: 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment') ); implementation {$R *.dfm} Function GetSystemWideEnvironmentVariable (aOwner: tEnviromentOwner; aName: String): String; Var Reg: TRegistry; begin Reg := TRegistry.Create; With Reg, cEnviromentOwnerRegPlace [aOwner] Do Try RootKey := Root; OpenKey (Key, False); Result := ReadString (aName); Finally Free; End; end; Function GetEnv(regarea, varname : STRING ): String; VAR retstr : String; BEGIN IF AnsiUpperCase(regarea) = 'USER' THEN retstr := GetSystemWideEnvironmentVariable (eoUser, varname) ELSE IF AnsiUpperCase(regarea) = 'SYSTEM' THEN retstr := GetSystemWideEnvironmentVariable (eoSystem, varname) ELSE retstr := ''; Result := retstr; END; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := GetEnv( Edit1.Text , Edit2.Text ); end; end. Das Test-Programm als Administrator gestartet liefert wie immer zurück. Wie funktioniert das immer? Grüsse, |
Re: Umgebungsvariablen unter Vista ohne Admin-Rechte
Wenn es unbedingt über die Registry laufen soll statt über ExpandEnvironmentStrings etc., versuch mal, das Registry-Objekt als Nur-lesend anzulegen.
Delphi-Quellcode:
Reg := TRegistry.Create(KEY_READ);
|
Re: Umgebungsvariablen unter Vista ohne Admin-Rechte
Du hast als "normaler" User halt nicht mehr überall so einfach Zugriff, vorallem nicht mit Schreibrechten.
[edit] siehe dem schnelleren User Reichen dir denn nicht die Variablen, welche du in deinem Programm-Kontext zur Verfügung hast? > GetEnvironmentVariableW ( ![]() |
Re: Umgebungsvariablen unter Vista ohne Admin-Rechte
Und so was kannst du noch lesen:
Delphi-Quellcode:
Wenn ich so was sehe, dann tun mir die Augen weh.
With Reg, cEnviromentOwnerRegPlace [aOwner] Do
|
Re: Umgebungsvariablen unter Vista ohne Admin-Rechte
Danke für alle Antworten.
Zitat:
Zitat:
Zitat:
Und da hat man dann nicht weiter drüber nachgedacht. Warum das Rad immer neu erfinden. Ich werde mich dann aber wahrscheinlich von dem Lesen der Registry verabschieden und den API-Aufruf nutzen. Danke nochmals. ;-) |
Re: Umgebungsvariablen unter Vista ohne Admin-Rechte
Ich meinte eigentlich den with-Ausdruck in deinem Code.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 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