marka 589 Geschrieben 15. Januar 2007 Melden Geschrieben 15. Januar 2007 Hallo zusammen, wieder mal eine Frage von mir an die Scripting-Spezis. Ich möchte, um mir das Einrichten neuer PCs an unsere neue Umgebung zu erleichtern, ein VB-Script schreiben. Etliche Teile sind schon fertig. Ein Teil des Scriptes ist, die Benutzervariablen %TMP% und %TEMP% zu ändern. Dazu habe ich nun folgenden Code, um die Werte abzufragen: ' VBScript 'Benutzervariablen %temp% und %tmp% ermitteln Set wshshell = CreateObject("WScript.Shell") usertemp = wshshell.ExpandEnvironmentStrings("%TEMP%") usertmp = wshshell.ExpandEnvironmentStrings("%TMP%") usertemps = "Benutzervariablen für temporäre Dateien:" & VbCr &_ "%TEMP%: " & "'" & usertemp & "'" & VbCr &_ "%TMP%: " & "'" & usertmp & "'" result = MsgBox ( usertemps,vbokonly + VbExclamation, "Ergebnis:") Wie kann ich die Werte nun ändern und zurückschreiben? Dank im Voraus.
woiza 10 Geschrieben 15. Januar 2007 Melden Geschrieben 15. Januar 2007 Hi, wenn es ne Usersspezifische Umgebungsvariable sein soll, muss diese unter "HKEY_CURRENT_USER\Environment" in der Registry gespeichert werden. Die systemweiten stehen unter "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" . Diese können mit vbs mit der RegWrite Methode geschrieben werden. Gruß woiza
marka 589 Geschrieben 15. Januar 2007 Autor Melden Geschrieben 15. Januar 2007 Ist das der einzige Weg? Ich kann ja auch in den Word-Optionen z.B. den Standard Dokumentenspeicherpfad via VBS ändern: 'Neuen Dokumentenpfad setzen Const wdDocumentsPath = 0 Set objWord = CreateObject("Word.Application") Set objOptions = objWord.Options objOptions.DefaultFilePath(wdDocumentsPath) = "U:\Worddokumente" objWord.Quit Geht das nicht auch in der Art?
woiza 10 Geschrieben 15. Januar 2007 Melden Geschrieben 15. Januar 2007 Hm, die Office-Variablen liegen aber auch an anderer Stelle. Kann sein, dass es anders geht, mir wäre kein Weg bekannt.
Das Urmel 10 Geschrieben 15. Januar 2007 Melden Geschrieben 15. Januar 2007 Hi dafür nimmt man besser setX.exe - aus den XP-Supporttools.
woiza 10 Geschrieben 15. Januar 2007 Melden Geschrieben 15. Januar 2007 Ich nehms zurück. Es geht auch mit WMI. Schau dir mit Scriptomatic oder so mal Win32_environment an. (Ich verwende mittlerweile den WMI Code Creator von MS). Hier mal ein Beispiel zum Auslesen mit WMI: strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_Environment",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_Environment instance" Wscript.Echo "-----------------------------------" Wscript.Echo "Caption: " & objItem.Caption Wscript.Echo "Description: " & objItem.Description Wscript.Echo "InstallDate: " & objItem.InstallDate Wscript.Echo "Name: " & objItem.Name Wscript.Echo "Status: " & objItem.Status Wscript.Echo "SystemVariable: " & objItem.SystemVariable Wscript.Echo "UserName: " & objItem.UserName Wscript.Echo "VariableValue: " & objItem.VariableValue Next
marka 589 Geschrieben 15. Januar 2007 Autor Melden Geschrieben 15. Januar 2007 Word legt seine Temporären Dateien auch im %TMP% & %TEMP% ab, das haben wir schon getestet. Darum geht es in denm Script, diverse Word-Einstellungen ändern sowie den Temp-Pfad anpassen, um ihn remote besser ausmisten zu können.
marka 589 Geschrieben 15. Januar 2007 Autor Melden Geschrieben 15. Januar 2007 OK, THX, ich teste das mal...
woiza 10 Geschrieben 15. Januar 2007 Melden Geschrieben 15. Januar 2007 Klar, die temporären legt Word auch in %TEMP%, allerdings wird in dem VBA ja der Dokumentspeicherort geändert. Dieser liegt an anderer Stelle.
marka 589 Geschrieben 15. Januar 2007 Autor Melden Geschrieben 15. Januar 2007 Das ist richtig, aber unsere Temp-Ordner sollen auch verändert werden. Ich dachte, das ginge ähnlich einfach, wie bei den Word-Options... Wie ist denn die genaue Synthax von RegWrite? In meinem Buch steht das nicht sauber beschrieben...
woiza 10 Geschrieben 15. Januar 2007 Melden Geschrieben 15. Januar 2007 Hi, hier gibts die Windows Script Doc, die ist ganz gut. Ist ein einzelnes chm. Ich kann dir mal ein Beispiel aus der Hilfe kopieren: Dim WshShell, bKey Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\", 1, "REG_BINARY" WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\MindReader", "Goocher!", "REG_SZ" bKey = WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\") WScript.Echo WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\MindReader") WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\MindReader" WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\" WshShell.RegDelete "HKCU\Software\ACME\" Gruß woiza
marka 589 Geschrieben 15. Januar 2007 Autor Melden Geschrieben 15. Januar 2007 Aha, gut! Besten Dank, werd's morgen gleich mal testen. <Nachtrag> Getestet --> Klappt wunnäbaar!! Fettes Danke! </Nachtrag>
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden