dynamisch das lokale Admin Passwort ändern

Post Reply
astalbold
Posts: 33
Joined: 14. Dec 2004, 12:59
Location: Münster
Contact:

dynamisch das lokale Admin Passwort ändern

Post by astalbold » 26. Apr 2005, 09:26

Hi,

wir wollen auf jedem unserer Rechner ein anderes lokales Admin Passwort.
Wir haben ein kleines Tool was anhand des Computernames ein Passwort erzeugt und in eine Benutzervariable schreibt. Wir hatten ursprünglich vor es per localuser.mod zu ändern, aber lt. Matrix42 Support erwartet Empirum dort ein von Empirum Configurator verschlüsseltes Passwort. Da man das nur manuel verschlüssel kann kommt das für ein Paket nicht in frage.
Hat jemand eine Idee wie man das lokale Adminpasswort trozdem setzen kann?

Gruß

AS

Walter_Schulz
Posts: 876
Joined: 17. Dec 2004, 12:29
Contact:

Re: dynamisch das lokale Admin Passwort ändern

Post by Walter_Schulz » 26. Apr 2005, 09:35

astalbold wrote:Hi,

wir wollen auf jedem unserer Rechner ein anderes lokales Admin Passwort.
Wir haben ein kleines Tool was anhand des Computernames ein Passwort erzeugt und in eine Benutzervariable schreibt. Wir hatten ursprünglich vor es per localuser.mod zu ändern, aber lt. Matrix42 Support erwartet Empirum dort ein von Empirum Configurator verschlüsseltes Passwort. Da man das nur manuel verschlüssel kann kommt das für ein Paket nicht in frage.
Hat jemand eine Idee wie man das lokale Adminpasswort trozdem setzen kann?

Gruß

AS
? Das lokale Adminpasswort in eine Benutzervariable schreiben?
Ich habe Sie hoffentlich falsch verstanden ...

Per Kommandozeile laesst sich
NET USER Administrator %variable%
setzen, um das lokale Adminpasswort zu setzen. Ob Sie das nun per CALL in eine Setup.inf einbauen oder in das Tool integrieren (gibt auch eine API dafuer) bleibt sich gleich. Im ersten Fall ist mir nicht ganz klar, ob das vom Tool erzeugte PW von der SETUP.INF ausgewertet werden kann.

Ciao!
Walter Schulz

jbeimel
Moderator
Moderator
Posts: 642
Joined: 15. Dec 2004, 09:16
Contact:

Post by jbeimel » 26. Apr 2005, 09:54

Da man das nur manuel verschlüssel kann kommt das für ein Paket nicht in frage.
Es geht auch per Commandline-Tool: auf der Empirum CD unter AddOns\Encrypter\EmpCrypt.exe
Beispiel: empcrypt.exe /Setup <password> /s > C:\pw.txt
bisschen "batchen" oder "setup.infen" zusammen mit dem externen Generator-Tool und ich sehe keine Probleme mehr.
Jens Beimel
Principal Consultant


Matrix42 AG
info@matrix42.de
http://www.matrix42.de

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 AG.

astalbold
Posts: 33
Joined: 14. Dec 2004, 12:59
Location: Münster
Contact:

Post by astalbold » 26. Apr 2005, 13:44

@Walter_Schulz
ne, Sie haben mich schon richtig verstanden, im Text fehlt allerdings das die Variable am Ende des Paketes gelöscht wird.
Das ganze ist deswegen so entstanden, weil wir die Ausgabe eines Call Aufrufes nicht in eine Empirumvariable umleiten können (lt. Support geht das nicht), ebenfalls kann (lt Support) Empirum nicht den Inhalt einer Dateiauslesen. Aus diesem Grund haben wir es in eine Bentzervariable umgeleitet.
Danke für den Tip mit Net User da hab ich überhaupt nicht mehr dran gedacht.

@jbeimel
Es gibt so ein Tool? der Support sagte mir das es nur über Configurator geht. Werde damal nach suchen.

Danke an euch beiden!

Gruß

AS

Walter_Schulz
Posts: 876
Joined: 17. Dec 2004, 12:29
Contact:

Post by Walter_Schulz » 26. Apr 2005, 16:46

astalbold wrote:@Walter_Schulz
ne, Sie haben mich schon richtig verstanden, im Text fehlt allerdings das die Variable am Ende des Paketes gelöscht wird.
Das ganze ist deswegen so entstanden, weil wir die Ausgabe eines Call Aufrufes nicht in eine Empirumvariable umleiten können (lt. Support geht das nicht), ebenfalls kann (lt Support) Empirum nicht den Inhalt einer Dateiauslesen. Aus diesem Grund haben wir es in eine Bentzervariable umgeleitet.
Danke für den Tip mit Net User da hab ich überhaupt nicht mehr dran gedacht.
Ach je! Es tut mir ja leid, als Ex-Kollegen den Support anschwaerzen zu muessen, aber so geht es (als Beispiel. Es gibt noch mehr Moeglichkeiten):

Setup.inf ruft Batch auf (CALLHIDDEN CMD /C <batchdatei>)
In der Batch wird das externe Tool aufgerufen und danach eine 2. Setup.inf per (Beispiel)

REM Externer Toolaufruf
Myapp.exe
REM nun steckt die Variable in der aktuellen Systemumgebung drin
CALL SETUP.EXE SETUP2.INF

MY_Variable kann innerhalb der SETUP2.INF wie jede Variable verwendet werden.


Ausserdem kann Empirum sehr wohl Dateien auswerten. Wo die Syntax von Empirum nicht leistungsfaehig genug ist, kann man beliebige Drittherstellertools (sed, grep, awk usw.) verwenden, um die Datei zu parsen und entsprechend auszuwerten. Schon mit den internen Mitteln von Windows (for, findstr, find) geht mehr als man manchmal fuer moeglich haelt.

Ciao!
Walter Schulz

astalbold
Posts: 33
Joined: 14. Dec 2004, 12:59
Location: Münster
Contact:

Post by astalbold » 27. Apr 2005, 09:41

Walter Schulz wrote: Setup.inf ruft Batch auf (CALLHIDDEN CMD /C <batchdatei>)
In der Batch wird das externe Tool aufgerufen und danach eine 2. Setup.inf per (Beispiel)

REM Externer Toolaufruf
Myapp.exe
REM nun steckt die Variable in der aktuellen Systemumgebung drin
CALL SETUP.EXE SETUP2.INF

MY_Variable kann innerhalb der SETUP2.INF wie jede Variable verwendet werden.


Ausserdem kann Empirum sehr wohl Dateien auswerten. Wo die Syntax von Empirum nicht leistungsfaehig genug ist, kann man beliebige Drittherstellertools (sed, grep, awk usw.) verwenden, um die Datei zu parsen und entsprechend auszuwerten. Schon mit den internen Mitteln von Windows (for, findstr, find) geht mehr als man manchmal fuer moeglich haelt.

Ciao!
Walter Schulz
Es gibt dabei aber ein paar Probleme. Die Variable steht nicht sofort zur Verfügung. Wenn ich die Var zwischen durch per echo ausgeben lasse ist sie immer leer. Halte ich das setup an und gebe über die eingabeaufforderung manuel echo %var% ein bekomme ich den Wert ausgegeben. innerhalb der setup.inf steht die variable erst nach dem 2.!!!!!! manuelen aufruf der setup.inf zur verfügung. ein call innerhalb der Hauptsetup.inf hilft dabei nicht. es scheint das die umgebung vom hauptprogramm vererbt wird, anders kann ich mir das bald nicht mehr erklären.
ich wollte ungern aus dem Zweizeiler 2 seperate Packete machen.

Wenn also noch jemand eine idee hat wäre ich echt dankbar.

Gruß

AS

Walter_Schulz
Posts: 876
Joined: 17. Dec 2004, 12:29
Contact:

Post by Walter_Schulz » 27. Apr 2005, 10:09

astalbold wrote:
Es gibt dabei aber ein paar Probleme. Die Variable steht nicht sofort zur Verfügung. Wenn ich die Var zwischen durch per echo ausgeben lasse ist sie immer leer. Halte ich das setup an und gebe über die eingabeaufforderung manuel echo %var% ein bekomme ich den Wert ausgegeben. innerhalb der setup.inf steht die variable erst nach dem 2.!!!!!! manuelen aufruf der setup.inf zur verfügung. ein call innerhalb der Hauptsetup.inf hilft dabei nicht. es scheint das die umgebung vom hauptprogramm vererbt wird, anders kann ich mir das bald nicht mehr erklären.
ich wollte ungern aus dem Zweizeiler 2 seperate Packete machen.

Wenn also noch jemand eine idee hat wäre ich echt dankbar.

Gruß

AS
Ich habe den Aufruf der Batch mit Bedacht eingefuehrt. Probieren Sie es einfach mal aus.

REM ===Testme.cmd===
<Ihr Programm>
Echo Test >c:\temp\output.txt
echo %var%>>c:\temp\output.txt
REM ===EOF===

Da statische Environment-Variablen immer durch einen Registry-Eintrag repraesentiert werden, kann man eventuell den betreffenden Registry-Key auswerten. Systemvariablen stecken in HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.
Sollte es sich tatsaechlich um eine Uservariable handeln, dann wuerde ich stattdessen in der Batch einen Wert in eine Datei oder in die Registry unter HKLM schreiben lassen. Da ich nicht weiss, wie Ihr Utility arbeitet, wuerde ich Problemen mit HKCU grundsaetzlich aus dem Weg gehen.

REM ===Testme.cmd===
<Ihr Programm>
Echo [mypw] >c:\temp\output.ini
echo PW=%var%>>c:\temp\output.ini
REM ===EOF===

Dann kann man in der Setup.inf nach dem Batchaufruf eine Abfrage auf diese Datei machen. Oder in die Registry schreiben und diese auswerten:

REM ===Testme.cmd===
<Ihr Programm>
REG ADD HKLM\Software\MyPW /v Eintrag /t REG_SZ /d %var%
REM ===EOF===

Ciao!
Walter Schulz

PS: Warum einfach, wenn es auch kompliziert geht ... ;-)
REM ===Testme.cmd===
<Ihr Programm>
Net user administrator %var%
REM ===EOF====

astalbold
Posts: 33
Joined: 14. Dec 2004, 12:59
Location: Münster
Contact:

Die Lösung

Post by astalbold » 27. Apr 2005, 17:19

Hi,

ich habe es jetzt so gelöst:

[Set:Product]
;1:, %App%, CREATE DIRECTORY CASCADED, 0

; cpw.exe
; -c: Computername
; -a: Passwortkategorie
; -l: Passwortlänge
; -es: Ausgabe in Systemvariable
; -eu: Ausgabe in Uservariable
;Passwort wird erzeugt und abgelegt in VAR %CPW%
CALL ..\cpw.exe -c:%ComputerName% -a:Admin -l:10 -es:CPW
;Die Ausgabe wird über die Reg in eine Empirumvar gelesen.
;Direkter Zugriff auf die Var nicht möglich
SET REGCPW=%HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","cpw"%
;Passwort des lokalen Administrators wir auf das Generierte gesetzt.
CALL net user Administrator %REGCPW%


[Reg:OnUninstallProduct]


[Reg:Product]
;Systemvariable wird gelöscht.
RegDacl.DEL(HKLM, "SYSTEM\CurrentControlSet\Control\Session Manager\Environment","cpw")


Ich habe jetzt nur noch ein kleines Problem, vielleicht kannst du mir da ja noch mal helfen. Ich bekomme die Var nicht gelöscht. Im meinem Handbuch (Papierform) steht nicht wie man eine Var löscht, wollte es dann über den Schlüssel machen mit RegDACL.DEL das scheint es aber unter 2005 SR2 nicht mehr zu geben und mit der Syntax komme ich überhaupt nicht klar.

Danke

as

Walter_Schulz
Posts: 876
Joined: 17. Dec 2004, 12:29
Contact:

Re: Die Lösung

Post by Walter_Schulz » 27. Apr 2005, 17:46

astalbold wrote: [Reg:Product]
;Systemvariable wird gelöscht.
RegDacl.DEL(HKLM, "SYSTEM\CurrentControlSet\Control\Session Manager\Environment","cpw")


Ich habe jetzt nur noch ein kleines Problem, vielleicht kannst du mir da ja noch mal helfen. Ich bekomme die Var nicht gelöscht. Im meinem Handbuch (Papierform) steht nicht wie man eine Var löscht, wollte es dann über den Schlüssel machen mit RegDACL.DEL das scheint es aber unter 2005 SR2 nicht mehr zu geben und mit der Syntax komme ich überhaupt nicht klar.
Man kann mit RegDacl.Del nur die Access Control List manipulieren. Loeschen eines Reg-Eintrags war so noch nie moeglich. Ausserdem hat RegDacl.Add als Security-Befehl nichts im Abschnitt REG:Product zu suchen.
Im Handbuch muesste auch zu finden sein, dass sich mit vorgestelltem Minus ein Reg-Eintrag loeschen laesst.
[Reg:Product]
;Systemvariable wird gelöscht.
-HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment":"cpw"

Vorsicht: Wenn man obigen Befehl fehlerhaft handhabt, dann ist man unter Umstaenden HKLM los. Naja. Irgendetwas wird schon noch da sein, aber nicht genug! In gequoteten Abschnitt war z. B. eine unnoetige Leerstelle. Ein Tool wie SETX ist an dieser Stelle sicherer.

Und statt CALL NET.EXe wuerde ich CALLHIDDEN NET.EXE bevorzugen. Man will dem User ja nicht zeigen, wie das PW lautet.

Ciao!
Walter Schulz

astalbold
Posts: 33
Joined: 14. Dec 2004, 12:59
Location: Münster
Contact:

Re: Die Lösung

Post by astalbold » 28. Apr 2005, 13:41

Walter_Schulz wrote: [Reg:Product]
;Systemvariable wird gelöscht.
-HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment":"cpw"

Vorsicht: Wenn man obigen Befehl fehlerhaft handhabt, dann ist man unter Umstaenden HKLM los. Naja. Irgendetwas wird schon noch da sein, aber nicht genug! In gequoteten Abschnitt war z. B. eine unnoetige Leerstelle. Ein Tool wie SETX ist an dieser Stelle sicherer.

Und statt CALL NET.EXe wuerde ich CALLHIDDEN NET.EXE bevorzugen. Man will dem User ja nicht zeigen, wie das PW lautet.

Ciao!
Walter Schulz
Hi,
im Handbuch steht, das der Befehl mit einem Minus davor nur bei der Deinstallation abgearbeitet wird...
probieres aber trozdem mal aus.

Walter_Schulz
Posts: 876
Joined: 17. Dec 2004, 12:29
Contact:

Re: Die Lösung

Post by Walter_Schulz » 28. Apr 2005, 13:51

astalbold wrote:
Walter_Schulz wrote: [Reg:Product]
;Systemvariable wird gelöscht.
-HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment":"cpw"
Hi,
im Handbuch steht, das der Befehl mit einem Minus davor nur bei der Deinstallation abgearbeitet wird...
probieres aber trozdem mal aus.
Warum wusste ich, dass das kommen wird? ;-)
Minus vor einem Befehl (!) wird nur bei Deinstallation abgearbeitet (Ausnahmen bestaetigen die Regel). Im Abschnitt REG:<Name> gilt eine andere Regel (ohne Ausnahme).

Ciao!
Walter Schulz

astalbold
Posts: 33
Joined: 14. Dec 2004, 12:59
Location: Münster
Contact:

hab es auch schon rausgefunden

Post by astalbold » 28. Apr 2005, 15:39

Hi,

hab es auch schon rausgefunden, wollte gerade den beitrag abändern.
Es funktioniert, so in etwa, nur das ich nach diesem Befehl überhaupt keine Systemvariablen mehr habe.

So funzt es richtig:
-HKLM,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","CPW",0x00000000,""

Danke für deine Hilfe!

as

Post Reply

Return to “Paketierung”

Who is online

Users browsing this forum: No registered users and 4 guests