AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Umgebungsvariablen unter Vista ohne Admin-Rechte

Umgebungsvariablen unter Vista ohne Admin-Rechte

Ein Thema von HPW · begonnen am 21. Apr 2009 · letzter Beitrag vom 21. Apr 2009
Antwort Antwort
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#1

Umgebungsvariablen unter Vista ohne Admin-Rechte

  Alt 21. Apr 2009, 09:30
Bislang habe ich mir Umgebungsvariablen so geholt:

Delphi-Quellcode:
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) = 'USERTHEN
      retstr := GetSystemWideEnvironmentVariable (eoUser, varname)
    ELSE IF AnsiUpperCase(regarea) = 'SYSTEMTHEN
      retstr := GetSystemWideEnvironmentVariable (eoSystem, varname)
    ELSE
      retstr := '';
    Result := retstr;
END;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := GetEnv( Edit1.Text , Edit2.Text );
end;

end.
Als Standard-User unter Vista gibt dies nichts mehr zurück.
Das Test-Programm als Administrator gestartet liefert wie immer zurück.
Wie funktioniert das immer?

Grüsse,
Hans-Peter
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Umgebungsvariablen unter Vista ohne Admin-Rechte

  Alt 21. Apr 2009, 09:36
Wenn es unbedingt über die Registry laufen soll statt über ExpandEnvironmentStrings etc., versuch mal, das Registry-Objekt als Nur-lesend anzulegen.Reg := TRegistry.Create(KEY_READ);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#3

Re: Umgebungsvariablen unter Vista ohne Admin-Rechte

  Alt 21. Apr 2009, 09:37
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 (MSDN-Library durchsuchenGetEnvironmentVariable) und Co.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Umgebungsvariablen unter Vista ohne Admin-Rechte

  Alt 21. Apr 2009, 10:03
Und so was kannst du noch lesen:
With Reg, cEnviromentOwnerRegPlace [aOwner] Do Wenn ich so was sehe, dann tun mir die Augen weh.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
HPW

Registriert seit: 28. Feb 2003
160 Beiträge
 
Delphi 7 Professional
 
#5

Re: Umgebungsvariablen unter Vista ohne Admin-Rechte

  Alt 21. Apr 2009, 11:15
Danke für alle Antworten.

Zitat:
Reg := TRegistry.Create(KEY_READ);
Funktioniert!


Zitat:
GetEnvironmentVariable
Funktioniert!


Zitat:
Wenn ich so was sehe, dann tun mir die Augen weh.
Sicher, aber man hat irgendwann sich mal eine Funktion aus Forum/internet gesucht und die hat halt das gemacht was man wollte.
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.

Hans-Peter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Umgebungsvariablen unter Vista ohne Admin-Rechte

  Alt 21. Apr 2009, 11:31
Ich meinte eigentlich den with-Ausdruck in deinem Code.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09: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