Winbootdir

Wie kann ich die Umgebungsvariable
winbootdir ändern. Mit dem Dos-Befehl
set geht es nicht, weil der nur
Umgebungsvariablen in Großbuchstaben
erzeugt. Es muß doch irgendeine Möglichkeit
geben, diesen Trick von Windows zu umgehen
(oder soll es garkeine Schutzvorrichtung sein???)
Wenn jemand eine Möglichkeit kennt,
mit Visual Basic dieses Problem zu lösen,
wer es toll, wenn er mir sie verraten
könnte :smile:

–Jan Vornberger

kannst du das File in deinem Programm nicht einfach laden, in eine StringList oder sowas und es dann bearbeiten ?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Eigentlich sollte Gross-/Kleinschrift bei Umgebungsvariablen keinen Unterschied machen (der API-Call GetEnvironmentVariable unterscheidet nicht zwischen Gross- und Kleinbuchstaben). Unter WinNT kann ich allerdings auch Umgebungsvariablen mit Kleinbuchstaben anlegen - „einfaches“ Windows hab’ ich nicht mehr zum Vergleich…

In VB kannst Du die Umgebungsvariablen mit folgenden API-Aufrufen setzen bzw. auslesen:

Declare Function SetEnvironmentVariable Lib „kernel32“ Alias „SetEnvironmentVariableA“ (ByVal lpName As String, ByVal lpValue As String) As Long
Declare Function GetEnvironmentVariable Lib „kernel32“ Alias „GetEnvironmentVariableA“ (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Function GetEnv(strEnv As String) As String
Dim Buf As String, Lg As Long
Buf = String(255, 0)
Lg = GetEnvironmentVariable(strEnv, Buf, Len(Buf))
GetEnv = Mid(Buf, 1, Lg)
End Function
Public Function SetEnv(strEnv As String, strVal As String) As Long
SetEnv = SetEnvironmentVariable(strEnv, strVal)
End Function

Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das habe ich leider auch schon ausprobiert,
weil ich selber kein absoluter Anfänger
im Programmieren bin. Leider kommt folgende
Fehlermeldung: File nicht gefunden!
Dabei hat er dann aber nicht die Zeile
markiert, wo der API-Call defeniert wird,
sondern dort wo er aufgerufen wird.

Kennt jemand die Ursache des Fehlers?

–Jan Vornberger

Die Kernel32.DLL solltest Du eigentlich immer haben - zumindest unter Windows 95 … bzw. Windows NT - oder über welches Betriebssystem reden wir?

Reinhard