Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
448to452
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aktuelle Umgebungsvariable auslesen

Aktuelle Umgebungsvariable auslesen
01.07.2004 00:41:56
Folker
Hallo,
ich möchte eine permanente Umgebungsvariable setzen und auch auslesen können. zum Setzen verwende ich die setx.exe mit der das auch gut funktioniert. Zum Auslesen habe ich nun schon verschiedene Codes ausprobiert, stoße aber immer auf das Problem, dass der Wert der ausgelesen wird, nicht refreshed wird, sondern immer der zum Systemstart bleibt. D.h. wenn die Variable zum Systemstart auf 0 steht und ich sie mit der setx.exe auf 5 ändere, dann zeigt mir mein Code trotzdem noch 0 an. Wie schaffe ich es, dass ich den tatsächlich aktuellen Wert der Umgebungsvariblen bekomme?
Vielen Dank für jeden Tipp
Ich benutze derzeit folgenden Code zum Auslesen der Variablen:

Sub SystemVariables()
Dim iIndex As Integer
Dim sResult As String
Dim sKey As String
Dim sValue As String
Dim iPos As Integer
iIndex = 1
Do
sResult = Environ(iIndex)
If sResult <> "" Then
iPos = InStr(sResult, "=")
sKey = Left$(sResult, iPos - 1)
sValue = Mid$(sResult, iPos + 1)
MsgBox (sKey & " , " & sValue)
End If
iIndex = iIndex + 1
Loop Until sResult = ""
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Gefunden
03.07.2004 19:25:56
Folker
So mittlerweile habe ich selbst eine Lösung gefunden, indem einfach der Wert direkt aus der Registry gelesen wird. :-)
Dieser Code liest z.B. den Path aus.
Private Declare

Function RegOpenKeyEx Lib "advapi32.dll" Alias _
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) _
As Long
Private Declare 

Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
ByVal lpReserved As Long, lpType As Long, lpData As Any, _
lpcbData As Long) As Long
Private Declare 

Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
' RegOpenKeyEx hKey-Konstanten
' Einstellungen des aktuellen Anwenders
' z.B. Anwender- und Desktop-Einstellungen (Farb-/Soundkonfiguration
' Hardware-Konfiguration, Netzwerkprotokolle, Software-Klassen
Private Const HKEY_LOCAL_MACHINE = &H80000002
' Teil von HKEY_LOCALE_MACHINE
' Enthält Definitionen für Dokumenttypen, Dateizuordnungen
' und Shell-Schnittstelle
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const HKEY_USERS = &H80000003
' Einstellungen des aktuellen Anwenders
Private Const HKEY_CURRENT_USER = &H80000001
' (Win NT/2000) Performance Dataschlüssel
Private Const HKEY_PERFORMANCE_DATA = &H80000004
' (Win 95/98) Dynamisch Daten
Private Const HKEY_DYN_DATA = &H80000006
' Aktuelle Konfiguration
Private Const HKEY_CURRENT_CONFIG = &H80000005
' RegOpenKeyEx samDesired-Konstanten
' Alle Arten von Zugiffen
Private Const KEY_ALL_ACCESS = &HF003F
' Erlaubt das Erstellen von symbolischen Links
Private Const KEY_CREATE_LINK = &H20
' Erlaubt, Unterschlüssel zu erstellen
Private Const KEY_CREATE_SUB_KEY = &H4
' Erlaubt Unterschlüssel aufzulisten
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
' Aktiviert die Änderungsbenachrichtigung (nicht unter Win95)
Private Const KEY_NOTIFY = &H10
' Erlaubt das Abfragen/Auslesen von Unterschlüssel
Private Const KEY_QUERY_VALUE = &H1
' Lesezugriff
Private Const KEY_READ = &H20019
' Erlaubt das Schreiben von Werten in Unterschlüssel
Private Const KEY_SET_VALUE = &H2
' Schreibzugriff
Private Const KEY_WRITE = &H20006
' RegQueryValueEx lpType-Konstanten
' Binärdaten in beliebigem Format (Bytefolge)
Private Const REG_BINARY = 3
' 32-Bit Zahl (Little Endian)
Private Const REG_DWORD = 4
' 32-Bit Zahl (Big Endian)
Private Const REG_DWORD_BIG_ENDIAN = 5
' nullterminierter String (vbNullChar), der nicht
' aufgelöste Verweise auf Umgebungsvariablen enthält (z.B. "%PATH%")
Private Const REG_EXPAND_SZ = 2
' symbolischer Link zu einem Unterschlüssel (Unicode)
Private Const REG_LINK = 6
' Liste nullterminierter Strings, die durch ein weiteres
' Nullzeichen (vbNullChar) beendet wird
Private Const REG_MULTI_SZ = 7
' Keine Daten
Private Const REG_NONE = 0
' Liste von Ressourcen in einer Ressourcen Map
Private Const REG_RESOURCE_LIST = 8
' nullterminierter String (vbNullChar)
Private Const REG_SZ = 1

Sub readRegKey()
Dim Retval As Long
Dim hKey As Long
Dim TmpSNum As String * 255
Retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
"System\CurrentControlSet\Control\Session Manager\Environment", 0&, KEY_READ, hKey)
If Retval <> 0 Then
MsgBox "Der Schlüssel konnte nicht geöffnet werden."
Exit Sub
End If
Retval = RegQueryValueEx(hKey, "Path", 0, REG_SZ, _
ByVal TmpSNum, Len(TmpSNum))
If Retval <> 0 Then
MsgBox "Der Schlüsselwert konnte nicht gelesen oder gefunden werden."
Exit Sub
End If
MsgBox "Path: " & Left$(TmpSNum, _
InStr(1, TmpSNum, vbNullChar) - 1), , "Produkt-Key"
Retval = RegCloseKey(hKey)
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige