Script - Batch ausführen nach Abfrage eines Reg-Wertes
Hallo ich habe folgendes Problem,
ich muss in die Registry unter dem HKLU einen bestimmten Wert (Pfad zu einer xml) eintragen, allerdings hängt der Eintrag davon ab welche Officesprache installiert ist.
Beispiel:
wenn in der Registry unter:
"HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\LanguageResources"
UILanguage 00000407 (ist der wert für eine deutsche Office installation steht, dann soll unter
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Spotlight\Providers\Contoso
ServiceURL dein Pfad zu einer xml datei geschrieben werden,
und das gleiche dann, wenn unter dem Wert UILanguage der Wert für das englische Office steht, dann soll der entsprechende XML Pafd geschrieben werden.
Kann mir hier jemand bitte helfen, bin leider nicht so der script/batch Experte.
Vielen Dank.
Gruß
Carsten
ich muss in die Registry unter dem HKLU einen bestimmten Wert (Pfad zu einer xml) eintragen, allerdings hängt der Eintrag davon ab welche Officesprache installiert ist.
Beispiel:
wenn in der Registry unter:
"HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\LanguageResources"
UILanguage 00000407 (ist der wert für eine deutsche Office installation steht, dann soll unter
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Spotlight\Providers\Contoso
ServiceURL dein Pfad zu einer xml datei geschrieben werden,
und das gleiche dann, wenn unter dem Wert UILanguage der Wert für das englische Office steht, dann soll der entsprechende XML Pafd geschrieben werden.
Kann mir hier jemand bitte helfen, bin leider nicht so der script/batch Experte.
Vielen Dank.
Gruß
Carsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 210839
Url: https://administrator.de/forum/script-batch-ausfuehren-nach-abfrage-eines-reg-wertes-210839.html
Ausgedruckt am: 26.12.2024 um 20:12 Uhr
18 Kommentare
Neuester Kommentar
Hallo caschopl!
Wobei der Hexwert '00000407' der dezimalen Sprachkennzahl '1031' entspricht...
Außerdem enthält bei mir 'UILanguage' den Wert 0 und 'InstallLanguage' den Wert '1031'
Gruß Dieter
Wobei der Hexwert '00000407' der dezimalen Sprachkennzahl '1031' entspricht...
Außerdem enthält bei mir 'UILanguage' den Wert 0 und 'InstallLanguage' den Wert '1031'
Gruß Dieter
Hallo Carsten!
Versuchs mal damit (*.vbs):
Wobei die Office-Version automatisch ermittelt wird...
Gruß Dieter
[edit] Code insoweit geändert, dass die höchstwertigste Version ermittelt wird [/edit]
Versuchs mal damit (*.vbs):
Option Explicit
Const sXmlPath = "..\...\Name_" 'entsprechend anpassen, wird z.B. mit '1031.xml' vervollständigt
Const sRegNewKey = "HKCU\Software\Microsoft\Office\%1\Common\Spotlight\Providers\Contoso\ServiceURL"
Const iHKCU = &H80000001
Const iHKLM = &H80000002
Const sRegKey = "Software\Microsoft\Office\"
Const sRegSubKey = "\Common\LanguageResources"
Const sRegValue = "UILanguage"
Dim aValues, sKey, sLanguage, sVersion
sLanguage = Null
With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
.EnumKey iHKCU, sRegKey, aValues
If IsArray(aValues) Then
sVersion = "1.0"
For Each sKey In aValues
If IsNumeric(sKey) And InStr(sKey, ".") > 0 Then
If CDbl(sKey) > CDbl(sVersion) Then sVersion = sKey
End If
Next
If sVersion <> "1.0" Then
sKey = sRegKey & sVersion & sRegSubKey
.GetDWordValue iHKCU, sKey, sRegValue, sLanguage
End If
End If
End With
If IsNull(sLanguage) = False Then
If sLanguage > "0" Then
With CreateObject("WScript.Shell")
.RegWrite Replace(sRegNewKey, "%1", sVersion), sXmlPath & sLanguage & ".xml", "REG_SZ"
End With
End If
End If
Gruß Dieter
[edit] Code insoweit geändert, dass die höchstwertigste Version ermittelt wird [/edit]
Hallo @XcaschoX,
mit
Ein schnelles Beispiel. Einfach mehrere Codeblöcke nach dem Schema von
Gruß,
@Snowman25
mit
reg query <schlüssel> /v <wert>
kannst du einen einzelnen Wert in der Registry abfragen.@Echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET key=HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\LanguageResources
SET keyvalue=UILanguage
:: splittet die REG QUERY auf und schreibt den Datenwert in %uilanguage%
FOR /f "tokens=3 skip=2" %%i IN ('REG QUERY %key% /v %keyvalue%') DO (SET uilanguage=%%i)
:: Programm beendet sich, wenn der key nicht vorhanden ist. Dies kann nicht umgangen werden.
:: springt zur Marke des Werts. z.B. 0x407 für Deutsch
GOTO %uilanguage%
:: GOTO beendet die Batch, wenn die Sprungmarke nicht gefunden wird. Dies kann nicht umgangen werden.
:0x407
ECHO Deutsche Sprache in Verwendung!
REM Hier Codeblock einfügen, was dabei geschehen soll
GOTO :SUCCESS
:default
ECHO Konnte Sprachwert nicht ermittlen oder verarbeiten
GOTO :END
:SUCCESS
ECHO Erfolgreich abgearbeitet!
:END
pause>nul
:0x407
hinzufügen.Gruß,
@Snowman25
Hallo Carsten!
Den Xml-Dateien solltest Du natürlich Namen geben, die die Sprachkennung enthalten z.B. 'Template_1031.xml'.
In dem Fall müsste dann die Konstante 'XmlPath' den Pfad inklusive 'Template_' enthalten der Rest '1031.xml' wird vom Code angehängt..
Die Sprachkennzahlen findes Du hier
Gruß Dieter
Den Xml-Dateien solltest Du natürlich Namen geben, die die Sprachkennung enthalten z.B. 'Template_1031.xml'.
In dem Fall müsste dann die Konstante 'XmlPath' den Pfad inklusive 'Template_' enthalten der Rest '1031.xml' wird vom Code angehängt..
Die Sprachkennzahlen findes Du hier
Gruß Dieter
Hallo Carsten!
Ist die Frage, was geht nicht?
Außer dem Pfad brauchst Du nix anzupassen. Der Code soll ja die Version automatisch ermitteln
Existiert in der Registry der Pfad 'HKEY_CURRENT_USER\Software\Microsoft\Office\14.0' ?
Gruß Dieter
Ist die Frage, was geht nicht?
Außer dem Pfad brauchst Du nix anzupassen. Der Code soll ja die Version automatisch ermitteln
Existiert in der Registry der Pfad 'HKEY_CURRENT_USER\Software\Microsoft\Office\14.0' ?
Gruß Dieter
Hallo Carsten!
Füge mal in meinem Code nach Codezeile 21 diese Codezeile ein:
Wird dann eine Meldung ausgegeben und wenn Ja welche?
Gruß Dieter
Füge mal in meinem Code nach Codezeile 21 diese Codezeile ein:
MsgBox "Version: " & aValues(0)
Wird dann eine Meldung ausgegeben und wenn Ja welche?
Gruß Dieter
Hallo Carsten!
D.h. es gibt im Office-Pfad mehrere Versionen 11.0, ..., 14.0 und Du möchtest die höchstwertigste Version verwenden?
Gruß Dieter
D.h. es gibt im Office-Pfad mehrere Versionen 11.0, ..., 14.0 und Du möchtest die höchstwertigste Version verwenden?
Gruß Dieter
Hallo Carsten!
In dem Fall musst Du die Version vorgeben und könntest dann auch Snowmans Script verwenden...
Gruß Dieter
In dem Fall musst Du die Version vorgeben und könntest dann auch Snowmans Script verwenden...
Gruß Dieter