Habt/Kennt Ihr ein Tool mit dem man Registrywerte bzw. Umgebungsvariablen per Kommandozeile editieren kann?
moin,
also, wenn bei uns sw (automatisch) installiert wird, werden bestimmte User/Systemvariablen immer durch neue Werte ersetzt. Warum ich das nicht will versuche ich im folgenden zu umschreiben...
Ihr kennt sicher die Variable LM_LICENSE_FILE (bei Netzwerklizenzen von Flexlm-Servern).
z.B.: LM_LICENSE_FILE=<PORT1>@<SERVER1>;<PORT2>@<SERVER2>;usw...
Wenn SW1 installiert wird, klappt ja noch alles wunderbar. Wenn SW2 die ihre eigenen Ports/Server hat wird der alte Eintrag rausgelöscht und durch den neuen ersetzt. Somit muss ich immer per Hand den alten Eintrag nachtragen. (Worauf ich nun wirklich keine Lust mehr habe!)
Das gleiche Spiel passiert, wenn ich z.B SW1 automatisch lösche... dann wird das LM_LICENSE_FILE komplett geleert und ich muss wieder per Hand rangehn.
Also würd ich am liebsten im automatischen Setup gar keine Einträge vornehmen, sondern alles im Installscript per Batchfile oder Ähnlichem machen.
Hab auch schon die Ressourcekit tools wie Pathman, setx, reg add, usw. probiert. Funktioniert alles ganz ok, bis auf den Punkt wo über eine Fehlerhafte Installation "drüberinstalliert" wird. Dann werden nämlich nie schon vorhandene Einträge im LM_LIC_FiLE ersetzt, sondern hintendrangeschrieben. Was wieder zu Unordnung und Verwirrung führt.
Habs auch per Batchfile versucht und mir die Zähne dran ausgebissen. Nun hab ich echt kein Bock mehr...
Das Batch sieht wie folgt aus:
Wie auch immer, das Batchfile läuft nicht ganz rund. Irgendwo sind (Denk)Fehler drin. Das ersetzen klappt nicht ganz, wenn der Eintrag schon existiert.
Ich suche also ne Software/Tool, das auf commandline Basis, wie auch immer, mir nen Registrywert oder die Umgebung (sollte schon die User und/oder Systemvariable x editierbar sein) neu erstellen, bearbeiten, ersetzten und löschen kann.
Hab auch schon versucht in C++ was zu machen, bin aber auch dort gescheitert, weil ich es bisher nicht geschafft habe nen Registrywert sauber zu schreiben.
Hinweis:
Machineenvironment liegt unter:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
Userenvironment liegt unter:
[HKEY_CURRENT_USER\Environment]
Vielleicht gibts ja unter Euch einige Freaks die das in 10-20 Minuten hinbekommen. Ich hab mir bisher die Zähne ausgebissen. Und bin immernoch nicht richtig weiter
Vielleicht habt Ihr auch ein Tool das die Sache erledigen kann.
Ich wär Euch auf jeden Fall sehr sehr dankbar.
Grüße,
jackson
also, wenn bei uns sw (automatisch) installiert wird, werden bestimmte User/Systemvariablen immer durch neue Werte ersetzt. Warum ich das nicht will versuche ich im folgenden zu umschreiben...
Ihr kennt sicher die Variable LM_LICENSE_FILE (bei Netzwerklizenzen von Flexlm-Servern).
z.B.: LM_LICENSE_FILE=<PORT1>@<SERVER1>;<PORT2>@<SERVER2>;usw...
Wenn SW1 installiert wird, klappt ja noch alles wunderbar. Wenn SW2 die ihre eigenen Ports/Server hat wird der alte Eintrag rausgelöscht und durch den neuen ersetzt. Somit muss ich immer per Hand den alten Eintrag nachtragen. (Worauf ich nun wirklich keine Lust mehr habe!)
Das gleiche Spiel passiert, wenn ich z.B SW1 automatisch lösche... dann wird das LM_LICENSE_FILE komplett geleert und ich muss wieder per Hand rangehn.
Also würd ich am liebsten im automatischen Setup gar keine Einträge vornehmen, sondern alles im Installscript per Batchfile oder Ähnlichem machen.
Hab auch schon die Ressourcekit tools wie Pathman, setx, reg add, usw. probiert. Funktioniert alles ganz ok, bis auf den Punkt wo über eine Fehlerhafte Installation "drüberinstalliert" wird. Dann werden nämlich nie schon vorhandene Einträge im LM_LIC_FiLE ersetzt, sondern hintendrangeschrieben. Was wieder zu Unordnung und Verwirrung führt.
Habs auch per Batchfile versucht und mir die Zähne dran ausgebissen. Nun hab ich echt kein Bock mehr...
Das Batch sieht wie folgt aus:
if "%1"=="" goto hilfe
if "%1"=="/?" goto hilfe
if "%1"=="?" goto hilfe
if "%1"=="-?" goto hilfe
if "%1"=="help" goto hilfe
if "%1"=="--help" goto hilfe
if "%1"=="/help" goto hilfe
goto argchk
:hilfe
echo Dieses BatchFile sollte immer mit Befehlserweiterungen gestartet
echo werden, ansonsten werden bestimmte Zeichenfolgen falsch inte-
echo pretiert. siehe dazu "cmd /?"
echo -----------------------------------------------------------------
echo Syntax:
echo varedit [Variablenname] [String] [d] [m]
echo -----------------------------------------------------------------
echo Option d: String wird aus Variable geloescht.
echo Option m: String wird als Systemvariable hinzugefuegt/geloescht.
echo ohne diese Option wird der String standardmaessig fuer
echo den Benutzer gesetzt.
echo Hier nur Kleinbuchstaben verwenden.
echo -----------------------------------------------------------------
echo Es kann auch der Inhalt einer anderen Umgebungsvariable als
echo String uebergeben werden. Diese sollte dann wegen der NameSpaces
echo in Anfuehrungszeichen stehen (siehe Beispiel 2).
echo
echo Wenn eine Variable IMMER mit einer anderen Variablen gleich sein
echo soll, muss statt "%%" das Zeichen "~" zu Beginn und am Ende ge-
echo setzt werden. Wenn VAR1=%%VAR2%% ergeben soll (siehe Beispiel 3).
echo -----------------------------------------------------------------
echo Wert zur USER-Umgebungsvariable hinzufuegen:
echo Beispiel1: varedit LM_LIC_FILE C:\test
echo Beispiel2: varedit HOME "%%USERPROFILE%%"
echo Beispiel3: varedit HOME "~USERPROFILE~"
echo -----------------------------------------------------------------
echo Wert aus USER-Umgebungsvariable loeschen (Argument d anfuegen!):
echo Beispiel1: varedit LM_LIC_FILE C:\test d
echo Beispiel2: varedit HOME "%USERPROFILE%" d
echo -----------------------------------------------------------------
echo Wert zur SYSTEM-Umgebungsvariable hinzufuegen (Arg. m anfuegen!):
echo Beispiel1: varedit LM_LIC_FILE C:\test m
echo Beispiel2: varedit HOME "%%USERPROFILE%%" m
echo -----------------------------------------------------------------
echo Wert aus SYSTEM-Umgebungsvariable loeschen (Argument d anfuegen!)
echo Beispiel1: varedit LM_LIC_FILE C:\test d m
echo Beispiel2: varedit HOME "%USERPROFILE%" m d
echo -----------------------------------------------------------------
goto fin
:argchk
set stat=
set tmp0=
set tmp1=
set tmp0=%1
set tmp1=%2
rem Anfuehrungszeichen aus tmp1 entfernen
rem Wird nur in der "echten" Dos Box benoetigt, die CCM Konsole intepretiert diese nicht
rem daher ist der Befehl auskommentiert
rem set tmp1=!tmp1:"=!
if "%3"=="m" set stat=m
if "%4"=="m" set stat=m
if "%3"=="d" goto delvar
if "%4"=="d" goto delvar
:addvar
rem falls Argument %2 schon existiert, rausloeschen -> keine doppelten Eintraege!
if not "!%tmp0%!"=="" set %tmp0%=!%tmp0%:%tmp1%=!
rem if not "!%tmp0%!"=="" set %tmp0%=!%tmp0%:~=!
rem if "!%tmp0%:%%!"=="=" set %tmp0%=!%tmp0%:~1,256!
rem if "!%tmp0%:%!"==
rem Argument %2 setzen
set %tmp0%=!%tmp0%!;%tmp1%
echo INFO:
echo ------------------------------------
echo Der String "%tmp1%" wurde der
echo Umgebungsvariable "%tmp0%" hinzugefuegt.
goto start1
:delvar
rem "" entfernen
set tmp1=!tmp1:"=!
set tmp1=!tmp1:"=!
rem Argument %2 loeschen
set %tmp0%=!%tmp0%:%tmp1%=!
echo INFO:
echo ------------------------------------
echo Der String "%tmp1%" wurde aus der
echo Umgebungsvariable "%tmp0%" geloescht.
:start1
rem Befehl doppelt, falls 3 mal ";" in der VAR vorkommen sollten
set %tmp0%=!%tmp0%:;;=;!
set %tmp0%=!%tmp0%:;;=;!
set %tmp0%=!%tmp0%:"=!
set %tmp0%=!%tmp0%:"=!
:loop1
rem Falls am Anfang ein ";" oder "="steht -> löschen
if "!%tmp0%:~0,1!"==";" set %tmp0%=!%tmp0%:~1,256!
if "!%tmp0%:~0,1!"==";" goto loop1
if "!%tmp0%:~0,1!"=="=" set %tmp0%=!%tmp0%:~1,256!
if "!%tmp0%:~0,1!"=="=" goto loop1
if "!%tmp0%!"==";" set %tmp0%=
if "!%tmp0%!"=="=" set %tmp0%=
if "%stat%"=="m" goto machine
rem in der "echten" DOS Box muesste der Befehl so lauten:
rem setx %tmp0% !%tmp0%!
setx %tmp0% "!%tmp0%!"
rem Leere Eintraege rauskicken:
if "!%tmp0%!"=="" regdat3 -d varu.txt
echo ------------------------------------
echo Die User-Variable "%tmp0%" wurde mit setx dauerhaft gesetzt.
echo ------------------------------------
goto end
:machine
rem in der "echten" DOS Box muesste der Befehl so lauten:
rem setx %tmp0% !%tmp0%! -m
setx %tmp0% "!%tmp0%!" -m
rem Leere Eintraege rauskicken:
if "!%tmp0%!"=="" regdat3 -d varm.txt
echo ------------------------------------
echo Die SystemVariable "%tmp0%" wurde mit setx dauerhaft gesetzt.
echo ------------------------------------
:end
if not errorlevel 1 goto allesok
echo Bei der Verarbeitung sind Fehler aufgetreten!
echo ------------------------------------
:allesok
echo Keine Fehler bei der Verarbeitung.
echo ------------------------------------
:fin
Wie auch immer, das Batchfile läuft nicht ganz rund. Irgendwo sind (Denk)Fehler drin. Das ersetzen klappt nicht ganz, wenn der Eintrag schon existiert.
Ich suche also ne Software/Tool, das auf commandline Basis, wie auch immer, mir nen Registrywert oder die Umgebung (sollte schon die User und/oder Systemvariable x editierbar sein) neu erstellen, bearbeiten, ersetzten und löschen kann.
Hab auch schon versucht in C++ was zu machen, bin aber auch dort gescheitert, weil ich es bisher nicht geschafft habe nen Registrywert sauber zu schreiben.
Hinweis:
Machineenvironment liegt unter:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
Userenvironment liegt unter:
[HKEY_CURRENT_USER\Environment]
Vielleicht gibts ja unter Euch einige Freaks die das in 10-20 Minuten hinbekommen. Ich hab mir bisher die Zähne ausgebissen. Und bin immernoch nicht richtig weiter
Vielleicht habt Ihr auch ein Tool das die Sache erledigen kann.
Ich wär Euch auf jeden Fall sehr sehr dankbar.
Grüße,
jackson
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 16537
Url: https://administrator.de/forum/habt-kennt-ihr-ein-tool-mit-dem-man-registrywerte-bzw-umgebungsvariablen-per-kommandozeile-editieren-kann-16537.html
Ausgedruckt am: 23.12.2024 um 13:12 Uhr
4 Kommentare
Neuester Kommentar
Nachfrage:
- Was ist denn regdat3 ( der mit varM.txt bzw. varU.txt als Parameter gerufen wird?) Auch ein Batch?
Sollte dieser Job nicht auch hier in diesem Batch stattfinden? Dass ist ja megafehlerträchtig (hey - neue Wortschöpfung. ganz unabsichtlich)
- Zweite Frage: Hältst Du es wirklich für sinnvoll, weiterzuwerkeln, BEVOR Du dich nun entschieden hast, ob Du
a) diese Aufgabe im InstallScript abfackelst (also wahrscheinlich Dich ausschließlich auf Reg-Updaterei beschränkst)
b) davon ausgehst, dass das eh nicht klappt und Dir so ein Umgebungsvariablen-Live-Updater bastelst?
Ich bastele gerne mit, aber das Ziel der Reise ist mir noch nicht ganz klar...
Und ein paar Randfragen wären auch noch da..
- Die Clients sind ausschließlich XP /W2K und höher?
- Reg.exe und setx.exe können im Path vorausgesetzt werden?
- was ist denn "echtes DOS" und was eine "CCM-Console"?
Interessiert
Frank / der Biber aus Bremen
- Was ist denn regdat3 ( der mit varM.txt bzw. varU.txt als Parameter gerufen wird?) Auch ein Batch?
Sollte dieser Job nicht auch hier in diesem Batch stattfinden? Dass ist ja megafehlerträchtig (hey - neue Wortschöpfung. ganz unabsichtlich)
- Zweite Frage: Hältst Du es wirklich für sinnvoll, weiterzuwerkeln, BEVOR Du dich nun entschieden hast, ob Du
a) diese Aufgabe im InstallScript abfackelst (also wahrscheinlich Dich ausschließlich auf Reg-Updaterei beschränkst)
b) davon ausgehst, dass das eh nicht klappt und Dir so ein Umgebungsvariablen-Live-Updater bastelst?
Ich bastele gerne mit, aber das Ziel der Reise ist mir noch nicht ganz klar...
Und ein paar Randfragen wären auch noch da..
- Die Clients sind ausschließlich XP /W2K und höher?
- Reg.exe und setx.exe können im Path vorausgesetzt werden?
- was ist denn "echtes DOS" und was eine "CCM-Console"?
Interessiert
Frank / der Biber aus Bremen
Moin, hudson,
danke für die Rückmeldung.
Ist jetzt schon ein bisschen klarer, was der Batch machen soll.
Jetzt muss ich das aber erst mal in Ruhe anschauen, wenn mein Drecksladen mal wieder in den Zustand kommen sollte, dass es hier kurz ein paar Minuten ohne mein Händchenhalten läuft *fluch-wie-ein-Rohrspatz*
Aber ich wollte nicht ablenken.. hat ja mit eurem Problemchen nichts zu tun..
Also .. über zwei Sachen bin ich eben beim Überfliegen gestolpert und spiel den Ball noch mal retour:
1) Reg.exe läuft IMO auch unter NT40 ..das war doch zuerst mit im NT-Resorce-Kit, dachte ich?
Kann ich hier nicht prüfen - so antike Geräte haben wir nicht mehr *lüüüüüüüüüüüüüüg-ohne-rotzuwerden
2) Warum Du das ganze NICHT über das Installscript abfackeln willst, hab ich immer noch nicht verstanden.
Wäre eher mein Ansatz gewesen... im Installscript hab ich alle Infos, alle Rechte, alle Tools..
ich hätte es zu vermeiden versucht, mich da nochmal ähnlich in die Nesseln zu setzen wie es M$ mit diesen Pathman.exe und Setx-Tools geschafft hat (das sind ja auch solche Live-Environment-Updater). Das kann schnell ausufern (vergl. die Un-Bedienbarkeit dieser beiden genannten Tools). Aber egal - machbar ist es.
Ich schau mir das mal an in Ruhe.
Frank / der Biber aus Bremen
danke für die Rückmeldung.
Ist jetzt schon ein bisschen klarer, was der Batch machen soll.
Jetzt muss ich das aber erst mal in Ruhe anschauen, wenn mein Drecksladen mal wieder in den Zustand kommen sollte, dass es hier kurz ein paar Minuten ohne mein Händchenhalten läuft *fluch-wie-ein-Rohrspatz*
Aber ich wollte nicht ablenken.. hat ja mit eurem Problemchen nichts zu tun..
Also .. über zwei Sachen bin ich eben beim Überfliegen gestolpert und spiel den Ball noch mal retour:
1) Reg.exe läuft IMO auch unter NT40 ..das war doch zuerst mit im NT-Resorce-Kit, dachte ich?
Kann ich hier nicht prüfen - so antike Geräte haben wir nicht mehr *lüüüüüüüüüüüüüüg-ohne-rotzuwerden
2) Warum Du das ganze NICHT über das Installscript abfackeln willst, hab ich immer noch nicht verstanden.
Wäre eher mein Ansatz gewesen... im Installscript hab ich alle Infos, alle Rechte, alle Tools..
ich hätte es zu vermeiden versucht, mich da nochmal ähnlich in die Nesseln zu setzen wie es M$ mit diesen Pathman.exe und Setx-Tools geschafft hat (das sind ja auch solche Live-Environment-Updater). Das kann schnell ausufern (vergl. die Un-Bedienbarkeit dieser beiden genannten Tools). Aber egal - machbar ist es.
Ich schau mir das mal an in Ruhe.
Frank / der Biber aus Bremen