Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Script - Batch ausführen nach Abfrage eines Reg-Wertes

Frage Microsoft Microsoft Office

Mitglied: caschopl

caschopl (Level 1) - Jetzt verbinden

08.07.2013, aktualisiert 10:40 Uhr, 2310 Aufrufe, 18 Kommentare

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

Mitglied: 76109
08.07.2013, aktualisiert um 10:55 Uhr
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
Bitte warten ..
Mitglied: caschopl
08.07.2013 um 11:15 Uhr
Hallo Dieter, das stimmt, aber ich habe eine MUI installiert und dann ist der Wert der UILanguage, der Wert der zur Zeit eingestellten Sprache.

Hast du net Idee wie man das lösen kann?

Gruß
Carsten
Bitte warten ..
Mitglied: 76109
08.07.2013, aktualisiert 09.07.2013
Hallo Carsten!

Versuchs mal damit (*.vbs):
01.
Option Explicit 
02.
 
03.
Const sXmlPath = "..\...\Name_"  'entsprechend anpassen, wird z.B. mit '1031.xml' vervollständigt  
04.
 
05.
Const sRegNewKey = "HKCU\Software\Microsoft\Office\%1\Common\Spotlight\Providers\Contoso\ServiceURL" 
06.
 
07.
Const iHKCU = &H80000001 
08.
Const iHKLM = &H80000002 
09.
 
10.
Const sRegKey = "Software\Microsoft\Office\" 
11.
Const sRegSubKey = "\Common\LanguageResources" 
12.
Const sRegValue = "UILanguage" 
13.
 
14.
Dim aValues, sKey, sLanguage, sVersion 
15.
     
16.
sLanguage = Null 
17.
     
18.
With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") 
19.
   .EnumKey iHKCU, sRegKey, aValues 
20.
         
21.
    If IsArray(aValues) Then 
22.
        sVersion = "1.0" 
23.
        For Each sKey In aValues 
24.
            If IsNumeric(sKey) And InStr(sKey, ".") > 0 Then 
25.
                If CDbl(sKey) > CDbl(sVersion) Then sVersion = sKey 
26.
            End If 
27.
        Next 
28.
         
29.
        If sVersion <> "1.0" Then 
30.
            sKey = sRegKey & sVersion & sRegSubKey 
31.
           .GetDWordValue iHKCU, sKey, sRegValue, sLanguage 
32.
        End If 
33.
    End If 
34.
End With 
35.
 
36.
If IsNull(sLanguage) = False Then 
37.
    If sLanguage > "0" Then 
38.
        With CreateObject("WScript.Shell") 
39.
            .RegWrite Replace(sRegNewKey, "%1", sVersion), sXmlPath & sLanguage & ".xml", "REG_SZ" 
40.
        End With 
41.
    End If 
42.
End If
Wobei die Office-Version automatisch ermittelt wird...

Gruß Dieter

[edit] Code insoweit geändert, dass die höchstwertigste Version ermittelt wird [/edit]
Bitte warten ..
Mitglied: Snowman25
08.07.2013 um 12:24 Uhr
Hallo caschopl,

mit reg query <schlüssel> /v <wert> kannst du einen einzelnen Wert in der Registry abfragen.
01.
@Echo off 
02.
SETLOCAL ENABLEDELAYEDEXPANSION 
03.
SET key=HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\LanguageResources 
04.
SET keyvalue=UILanguage 
05.
 
06.
:: splittet die REG QUERY auf und schreibt den Datenwert in %uilanguage% 
07.
FOR /f "tokens=3 skip=2" %%i IN ('REG QUERY %key% /v %keyvalue%') DO (SET uilanguage=%%i) 
08.
:: Programm beendet sich, wenn der key nicht vorhanden ist. Dies kann nicht umgangen werden. 
09.
 
10.
:: springt zur Marke des Werts. z.B. 0x407 für Deutsch 
11.
GOTO %uilanguage% 
12.
:: GOTO beendet die Batch, wenn die Sprungmarke nicht gefunden wird. Dies kann nicht umgangen werden. 
13.
 
14.
:0x407 
15.
ECHO Deutsche Sprache in Verwendung! 
16.
REM Hier Codeblock einfügen, was dabei geschehen soll 
17.
GOTO :SUCCESS 
18.
 
19.
:default 
20.
ECHO Konnte Sprachwert nicht ermittlen oder verarbeiten 
21.
GOTO :END 
22.
 
23.
:SUCCESS 
24.
ECHO Erfolgreich abgearbeitet! 
25.
 
26.
:END 
27.
pause>nul
Ein schnelles Beispiel. Einfach mehrere Codeblöcke nach dem Schema von :0x407 hinzufügen.

Gruß,
Snowman25
Bitte warten ..
Mitglied: caschopl
08.07.2013 um 12:51 Uhr
Hallo Dieter,
erstmal danke für deine Mühe.

Denke das script funktioniert bestimmt, allerdings stelle ich mir gerade die Frage, wo ich genau bestimme welch der 6 xml dateien in den wer der ServiceURL eingetragen wird.

die xml dateien liegen auf den Server alle im selben verzeichnis, heißen jedoch z.B. template_de.xml oder template_en.xml usw.

wie gesagt, es soll geprüft werden, welche Sprache gerade eingestellt ist und dann soll die entsprechende XML datei eingetragen wir.

Wenn ich den script richtig lese gehst du davon aus, dass die xml immer gleich heisst, oder? Sorry, aber bin im scripten ganz,ganz schlecht.

Gruß
Carsten
Bitte warten ..
Mitglied: 76109
08.07.2013, aktualisiert um 13:14 Uhr
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
Bitte warten ..
Mitglied: caschopl
08.07.2013 um 13:54 Uhr
Hallo Dieter,

so sieht die Datei bei mir jetzt aus. aber es geht irgendwie nich......

Option Explicit

Const sXmlPath = "J:\Data\Templates\Comtoso\template_" 'Anpassen

Const sRegNewKey = "HKCU\Software\Microsoft\Office\%1\Common\Spotlight\Providers\Comtoso\ServiceURL"

Const iHKCU = &H80000001
Const iHKLM = &H80000002

Const sRegKey = "Software\Microsoft\Office\"
Const sRegSubKey = "\Common\LanguageResources"
Const sRegValue = "UILanguage"

Dim aValues, sKey, sLanguage

sLanguage = Null

With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
.EnumKey iHKCU, sRegKey, aValues

If IsArray(aValues) Then
If IsNumeric(aValues(0)) Then
sKey = sRegKey & aValues(0) & 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", aValues(0)), sXmlPath & sLanguage & ".xml", "REG_SZ"
End With
End If
End If

Frage muss in der Zeile 10 - 12 nicht noch irgendwo die Versionsnummer angegeben werden?

Danke Gruß
Carsten
Bitte warten ..
Mitglied: 76109
08.07.2013 um 14:05 Uhr
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
Bitte warten ..
Mitglied: Snowman25
08.07.2013 um 14:24 Uhr
Immer wieder angenehm, so komplett ignoriert zu werden
Wozu mach ich mir überhaupt die Mühe?
Bitte warten ..
Mitglied: caschopl
08.07.2013 um 14:29 Uhr
Hey Snowmann,
sorry, vielen dank, habs noch nicht getestet.
Mea Culpa.

Werds gleich testen. Danke schonmal für die Mühe.

LG
Carsten
Bitte warten ..
Mitglied: caschopl
08.07.2013 um 14:29 Uhr
Hallo Dieter,
der Pfad existiert.

Gruß
Carsten
Bitte warten ..
Mitglied: caschopl
08.07.2013 um 16:24 Uhr
Hallo Snowman,
danke für die Batch. Fuktioniert sweit ganz gut.
Denke aber, dass ich mit der VBS von Dieter flexibler bin.

Vielen Dank für deine Mühe.

Gruß
Carsten
Bitte warten ..
Mitglied: 76109
08.07.2013, aktualisiert um 20:08 Uhr
Hallo Carsten!

Füge mal in meinem Code nach Codezeile 21 diese Codezeile ein:
01.
MsgBox "Version: " & aValues(0)
Wird dann eine Meldung ausgegeben und wenn Ja welche?

Gruß Dieter
Bitte warten ..
Mitglied: caschopl
09.07.2013 um 08:26 Uhr
Guten Morgen,
als Message kommt Verion 11.0

Wenn ich allerdings unter 11.0 schau ist auch nichts eingetragen.

Gruß
Carsten
Bitte warten ..
Mitglied: 76109
09.07.2013, aktualisiert um 09:50 Uhr
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
Bitte warten ..
Mitglied: caschopl
09.07.2013 um 09:48 Uhr
Hallo Dieter,
ja in der Registry sind mehrere Einträge.
es gibt auch 15.0 aber nur weil Lync 2013 installiert ist. die aktuelle Office Installation ist 14.0
irgendwann wird es wahrscheinlich 15.0.

Gruß
Carsten
Bitte warten ..
Mitglied: 76109
09.07.2013 um 09:53 Uhr
Hallo Carsten!

In dem Fall musst Du die Version vorgeben und könntest dann auch Snowmans Script verwenden...

Gruß Dieter
Bitte warten ..
Mitglied: caschopl
09.07.2013 um 09:57 Uhr
Hallo Dieter,
ok. Danke nochmals für deine Mühe.

Viele Grüße
Carsten
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Reg query abfrage in batch mit goto
gelöst Frage von 114449Windows Tools4 Kommentare

Hallo zusammen, ich möchte eine REG_SZ Schlüssle in einer Batch abfragen und dann einen goto Sprung machen. die abfrage ...

Windows Server
Batch Script bei Start ausführen
Frage von KEFHVDIWindows Server3 Kommentare

Hallo, wie kann ich bei einem Windows Server 2012 ein Batchscript, welches mir ein Laufwerk einbinden soll, beim start ...

Windows Userverwaltung
Logon Script mit einer .reg Datei
gelöst Frage von KathakiWindows Userverwaltung7 Kommentare

Hallo ihr Lieben, wir haben die letzten Wochen genutzt und sind mit unserem Terminalserver auf Windows Server 2012 R2 ...

Windows Server
Powershell Script in Script ausführen
Frage von diematrix125Windows Server2 Kommentare

Hallo! Ich habe hier momentan zwei verschiedene Skripte: 1. Skript zum Erstellen von Usern 2. Skript zum Erstellen der ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 8 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 12 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware8 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...