drobskind
Goto Top

Batch Zugriff auf Registry auslesen, auswerten, ändern, speichern.

also, ich habe einen neune Kenntnisstand...
jetzt benötige ich hilfe, von einem Batchprofi

so.. nach stundenlanger recherche in den Tiefen der Windows Registry habe ich nun einige wertvolle informationen gefunden.

nun aber erstmal zu den problem an sich:

- ich habe einen server mit zur zeit 2 hardwareprofilen.
- es ist ein notfall ersatzserver der je nach hardwareprofil andere zwecke erfüllt.
- größtenteils wird auf ihn via remote desktop zugegriffen.
- eventuell verlangt der rechner ja auch mal nach einem neustart.
- da der rechner nach dem neustart aber nicht mit dem 1ten sondern mit dem aktuellen profil starten soll brauche ich hilfe.

der rechner ist ein ersatzsystem für mehrere andere systeme, wird aber natürlich nur für das ausgefallene system eingesetzt. und darf somit auch nur mit dessen funktionen starten!

ich brauche jetzt eine batch datei die mir einige zugriffe auf die registry erledigt.

1. Zugriff auf <HKLM\System\ControlSet001\Control\IDConfigDB\>

2. auslesen des Wertes von "Current Config" dieser kann folgende werte annehmen 1,2,3,4 usw. --------------((Angenommenes Beispiel:2))

3. Nun muss anhand der nummer in den RegSchlüssel gewechseslt werden:
<HKLM\System\ControlSet001\Control\IDConfigDB\Hardware Profiles\0002>

4. Dort muss der Dword Wert von "Preference Order" auf 0 gesetzt werden.
Somit ist das profil an platz 1 und wird somit automatisch gestartet.

5. Das Profil, welches bis dahin platz 1 war, (Angenommen 1 [0001]) muss dann auf den platz von profil 2 wechseln.

!!! die Preference Order muss 0,1,2,3,4,5.... sein.. es dürfen keine zahlen frei bleiben.

falls noch mehr erläuterungen gebraucht werden kurz anfragen,
hätte auch die .reg datein für die werte da, falls ihr sie benötigt, hänge sie unten an:

danke schonmal für eure zeit
mfg
drobsind



REG CURRENT CONFIG:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\IDConfigDB]
"CurrentConfig"=dword:00000002



REG PROFIL 1:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\IDConfigDB\Hardware Profiles\0001]
"PreferenceOrder"=dword:00000000



REG PROFIL 2:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\IDConfigDB\Hardware Profiles\0002]
"PreferenceOrder"=dword:00000001

Content-Key: 51562

Url: https://administrator.de/contentid/51562

Printed on: April 25, 2024 at 12:04 o'clock

Member: Dani
Dani Feb 13, 2007 at 14:08:21 (UTC)
Goto Top
Hi,
also das dürfte kein Problem sein. Leider kann ich dein Vorgang oben nicht ganz folgen.

Du wählst beim Start eine Zahl 1-5 aus. Dabei wird gewählt, welches Profil geladen werden soll. Nun muss erstmal das aktive Profil gefunden werden und in eine Variable gespeichert werden. Danach kann das gewünschte Profil auf "aktiv" gesetzt werden. Zum Schluss dem "jetzt" alten Profil die Zahl des "jetzt" neuen Profil zuweisen.

Sehe ich das so richtig?!


Gruß
Dani
Member: drobskind
drobskind Feb 14, 2007 at 06:35:25 (UTC)
Goto Top
also, vorgang nochmal in einzelschritten:

- Booten

- Hardwareprofil auswählen (auswahl wird als currentconfig in registry gespeichert)

- Windows Startet mit dem Profil

-> mit batch die current config auslesen aus registry...
-> batch liest die anzahl der hardwareprofile aus registry...
-> batch schaut welches hardwareprofil als standart bootet (preferenceOrder=0)
-> batch tauscht die Preference Order von Standart & Current

nun bootet beim nächste start automatisch das gerade ausgewählte hardwareprofil, da es an erster position in der liste steht.
und das was vorher in der liste an erster stelle stand steht nun da wo das ausgewählte stand.

ist schwierig zu erklären... ich weiss face-wink
aber wenn man mal unter hardwareprofile (rechtsklick-arbeitsplatz) nachschaut, kann ich nciht einfach ein profil als standard festlegen...
er bootet immer das erste in der liste!

falls noch fragen bestehen einfach stellen...

ps: es wär schön, wenn das script so flexibel ist, For schleife oder ähnliches, dass es mit unterschiedlichen anzahlen von hardwareprofilen klar kommt
Member: drobskind
drobskind Feb 14, 2007 at 10:01:52 (UTC)
Goto Top
HIER KÖNNT IHR SEHEN WIE DIE BATCH NUN AUSSIEHT!!

::---Version 1.0--------------------------------
::----------------------------------------------
::----------------------------------------------
::---- Diese Batch erkennt das aktuelle --------
::---- Hardwareprofil und setzt es in der ------
::---- Auswahlliste beim Booten an die ---------
::---- erste Position, damit es bei einem ------
::---- eventuellem Neustart über Remote- -------
::---- Desktop automatisch geladen wird. -------
::----------------------------------------------
::----------------------------------------------
::---- Geschrieben für Win 2K3 Server ----------
::----------------------------------------------

@echo off
set i=1
::----------------------------------------------
::----------------------------------------------
:: ---- Aktuelles Hardware Profil auslesen -----
::----------------------------------------------
::----------------------------------------------

set current="reg query "hklm\system\controlset001\control\idconfigdb" /v CurrentConfig | find "CurrentConfig""
FOR /F "tokens=1* delims=0x" %%A IN ('%current%') DO SET current=%%B

::----------------------------------------------
::----------------------------------------------
:: ---- Default Hardware Profil auslesen -------
::----------------------------------------------
::----------------------------------------------

:start

reg query "HKLM\System\ControlSet001\Control\IDConfigDB\Hardware Profiles\000%i%" /v PreferenceOrder | find "PreferenceOrder" >nul
if not errorlevel 1 goto check
goto weiter

:check

FOR /F "tokens=1* delims=x" %%A IN ('"reg query "hklm\system\controlset001\control\idconfigdb\hardware profiles\000%i%" /v PreferenceOrder | find "PreferenceOrder""') DO SET startup=%%B
if '%startup%'=='0' set Default=%i%
if '%i%'=='%current%' set aktuell=%startup%
rem echo %Startup%
set /a i=%i%+1
goto start

::----------------------------------------------
::----------------------------------------------
:: --- Ausgabe der Daten -----------------------
::----------------------------------------------
::----------------------------------------------

:weiter
cls

::----------------------------------------------
::----------------------------------------------
:: --- Anpassen der HW Bootreihenfolge----------
::----------------------------------------------
::----------------------------------------------

if "%current%"=="%default%" goto ende
ECHO :::NUN WERDEN DIE HARDWAREPROFILE ANGEPASST:::

reg add "HKLM\System\ControlSet001\Control\IDConfigDB\Hardware Profiles\000%current%" /v PreferenceOrder /t REG_DWORD /d "0" /f
set /a current=%current%-1
reg add "HKLM\System\ControlSet001\Control\IDConfigDB\Hardware Profiles\000%default%" /v PreferenceOrder /t REG_DWORD /d "%aktuell%" /f

:ende
ECHO PROGRAMM AUSGEFÜHRT
Member: Dani
Dani Feb 14, 2007 at 18:21:32 (UTC)
Goto Top
G' Abend,
gute Sache...wollte eben mein Batch posten. Habe ihn heute Mittag fertig gemacht. Aber so is au recht!


Grüße
Dani