rdietrich
Goto Top

Als Hauptbenutzer Registry-Keys anderer User auslesen

Hallo, ich möchte als Hauptbenutzer / Administrator via Batch-Datei auf die Registry-Keys anderer User auf dem lokalen PC auslesen, beispielsweise den Pfad zu den eigenen Dateien.

Eine weitere Hürde bei diesem Vorhaben ist wohl die Auswahl der entsprechenden User innerhalb der Batch, da ich die Werte nur für bestimmte Benutzer auf dem PC brauche, nicht aller. Für ein paar Ratschläge, Zaunpfähle und Tipps bin ich sehr dankbar.

Gruß,

R.D.

Content-ID: 106971

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

Ausgedruckt am: 08.11.2024 um 11:11 Uhr

rdietrich
rdietrich 24.01.2009 um 10:18:13 Uhr
Goto Top
ich habe mittlerweile herausgefunden, wie man es manuell macht. relativ gut beschrieben unter: http://www.wintotal.de/Tipps/index.php?id=934

Leider habe ich noch keinen Weg gefunden, die ganze Sache mittels Batch zu automatisieren.
DerWoWusste
DerWoWusste 24.01.2009 um 15:00:56 Uhr
Goto Top
Du könntest ein Logonskript schreiben, das mit der reg.exe arbeitet, um solche Werte zu dumpen. (Dazu müssten sich die Nutzer natürlich anmelden).
Oder Du liest die SIDs aud mit User2SID.exe (google) und greifst damit unter HKey_Users an.
paulepank
paulepank 24.01.2009 um 15:13:42 Uhr
Goto Top
Hallo ,

Für ein paar Ratschläge, Zaunpfähle und Tipps bin ich sehr dankbar.

Sollst du haben.

ich möchte als Hauptbenutzer ... Registry-Keys anderer User

dir fehlen dazu die Rechte. Mußt zu der Gruppe der Admins gehören.

Leider habe ich noch keinen Weg gefunden, die ganze Sache mittels Batch zu automatisieren

Dazu gibt es die Reg.exe. Hilfe dazu REG LOAD /? und REG QUERY /? sowie REG UNLOAD /?.
Das Ganze in ne nette FOR-Anweisung in Kombination mit FINDSTR gepackt.
Auch ein paar ECHO sollten nicht fehlen.
Für die Userauswahl gibt es verschieden Lösungsmöglichkeiten.
z.B. als Parameter beim Batchaufruf oder mit SET.
Natürlich dürfen die entsprechen User zu diesem Zeitpunkt nicht angemeldet sein.

So, das waren genug Tipps. Pack es an.

cu paulepank
rdietrich
rdietrich 24.01.2009 um 21:30:09 Uhr
Goto Top
face-smile

vielen Dank schonmal. Ich hab's hinbekommen, bisher leider ohne die Schleife. Folgendes Problem stellt sich dar:

NTUSER.DAT haben als Attribut "versteckt" und lassen sich so durch
for /f "C:\Dokumente und Einstellungen\" %%i in (NTUSER.DAT?) do echo %%i  
leider nicht finden. - Und selbst wenn ich alle NTUSER.DAT im aufgeführten Verzeichnis finden würde, dann wären wohl auch NTUSER.DAT von "LocalService", "NetworkService" und "Default User" dabei.

Ideal wäre wohl eine rekursive Schleife durch C:\Dokumente und Einstellungen\, die jeweils nur direkt in den Profil-Verzeichnissen - mit Ausnahme der "LocalService", "NetworkService" und "Default Users" - nach der NTUSER.DAT sucht und diese behandelt. Leider überschreitet das deutlich meinen aktuellen Batch-Horizont - für Hilfe jeder Form bin ich dankbar.

Gruß,

R.D.

P.S.: Funktioniert "REG" auch schon unter Win2k?

[Update]

mit

dir "C:\Dokumente und Einstellungen" /b /s /ah | find "NTUSER.DAT"  

finde ich nun alle NTUSER.DAT, wohl aber auch die in den oben aufgeführten Systemverzeichnissen. Leider funktioniert folgende Zeile nicht so richtig:

for /f %%i in ('dir "C:\Dokumente und Einstellungen" /b /s /ah ^| find "NTUSER.DAT"') do echo %%i & echo.  

Da kommt in der Ausgabe immer nur:

<code text=plain>
C:\Dokumente
paulepank
paulepank 25.01.2009 um 00:33:56 Uhr
Goto Top
Hallo,

ich hab's hinbekommen

einen Schmarrn hast du. Du bittest um Tipps, beachtest sie aber nicht. Was willst du mit FIND ?
Wozu nach einer NTUSER.DAT suchen, die ist für jeden User immer da. Du mußt sie mit REG LOAD für den gewünschten User laden.
Bsp:
reg load HKU\user1 "c:\dokumente und einstellungen\user1\ntuser.dat"  
reg query ..... | findstr /i suchbegriff
reg unload HKU\user1
User1 wird durch eine Variable ersetzt.
Da du auch nicht schreibst für wieviele User die Abfrage erfolgen soll, kann zur Variablenübergabe auch kein Hinweis erfolgen. Tipp: Bei deinerr Anmeldung hast du zugestimmt dein BS und weitere Angaben zu beschreiben,falls nötig. Und es ist nötig. Windows ist nicht gleich Windows. Das sollte sich herumgesprochen haben. Handle auch so .


Funktioniert "REG" auch schon unter Win2k?

jetzt wird es aber wirklich Zeit zu erklären unter welchem BS die Batch laufen soll und ja, für Windows 2000 gibt es in den Windows 2000 Supporttools die REG. Tipp: Es soll Suchmaschinen geben.

BTW: hast du jetzt Admin-Rechte ?

cu paulepank
rdietrich
rdietrich 25.01.2009 um 11:51:29 Uhr
Goto Top
Hallo,

eine Angabe zum Einsatzzweck des Scripts und zu den verwendeten Betriebssystemen wäre sicherlich sinnvoll gewesen, muss ich zugeben. Das Script soll später sowohl auf XP als auch auf Windows 2000 (mit den unterschiedlichsten Patch-Ständen) laufen und bestimmte Pfade in eine Datei schreiben, um diese später weiter zu verarbeiten.

Und ich habe es sehrwohl erfolgreich hinbekommen, die Registry-Werte eines anderen Users als Administrator auszulesen - dank deiner Tipps, die ich berücksichtigt habe. Habe es statisch mit folgendem Code gemacht:

@echo off

set tempd="C:\Dokumente und Einstellungen\testuser\NTUSER.DAT"  

if exist %tempd% (
	echo.
	echo Datei wurde gefunden.
	echo.
	echo tempd: %tempd%
) else (
	echo Datei wurde nicht gefunden.
)
echo.

REG LOAD HKLM\mytest %tempd%
echo.

REM # Eigene Dateien auslesen und zur Sicherung hinzufügen

for /f "tokens=2*" %%i in ('REG QUERY "HKLM\mytest\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal" ^| find "Personal"') do set "pfad=%%j"  

echo Eigene Dateien: %Pfad%
echo.
REG UNLOAD HKLM\mytest
echo.

pause

Adminrechte sind vorhanden. Die Schleife mit dem Find habe ich deswegen gewählt, weil ich bei der folgenden Schleife ohne Find-Befehl die NTUSER.DAT.logs der User mit aufgelistet bekomme, die ich nicht brauchen kann. (Zur Ermittlung der von dir beschriebenen Variable)

for /f %%i in ('dir "C:\Dokumente und Einstellungen" /b /s /ah ^| find "NTUSER.DAT"') do echo %%i & echo.  

Leider bin ich bisher auch noch nicht wirklich weiter gekommen.

Gruß,

R.D.
paulepank
paulepank 25.01.2009 um 12:03:47 Uhr
Goto Top
for /f %%i in ('dir "C:\Dokumente und Einstellungen" /b /s /ah ^| find "NTUSER.DAT"') do echo %%i & echo.

wenn du es unbedingt in dieser Weise lösen willst.
for /f "delims=" %%i in ('dir "C:\Dokumente und Einstellungen" /b /s /ah ^| find "NTUSER.DAT"') do echo %%i & echo.

cu paulepank
rdietrich
rdietrich 25.01.2009 um 12:10:05 Uhr
Goto Top
merci face-smile

Ich wollte innerhalb dieser Schleife noch last-modified abfragen und die Excludes für die System-Verzeichnisse unterhalb von C:\Dokumente und Einstellungen\, um auch wirklich nur die NTUSER.DAT's zu erfassen, die relevant sind.

Hast du eine bessere Idee?

Gruß,

R.D.
paulepank
paulepank 25.01.2009 um 13:21:58 Uhr
Goto Top
Ich habe aus deiner Überschrift interpretiert, daß du die Werte nur aus bestimmten , also ausgewählten Usern auslesen willst.
Unter dieser Annahme Aufruf der Batch mit
auslesen user1 user5 "user mit space" user7  
und die Batch auslesen.cmd könnte als Anregung so aussehen:
@echo off
for /d %%i in (%*) do (
reg load "HKU\%%~i" "c:\dokumente und einstellungen\%%~i\ntuser.dat" >nul  
for /f "tokens=3*" %%a in ('reg query "HKU\%%~i\software\microsoft\windows\currentversion\explorer\shell folders"^|findstr /i personal') do echo Speicherort der Eigenen Dateien von User %%~i ist "%%a %%b"  
reg unload "HKU\%%~i" >nul)  

Falls noch mehr Werte für dich interssant sind , dann vor reg unload weitere Abfragen mit for ...einfügen.

Hinweis:
REG.EXE// unter Windows 2000 und XP liefern nicht immer gleich Werte zurück

cu paulepank
rdietrich
rdietrich 05.02.2009 um 14:28:39 Uhr
Goto Top
Für alle die, die ein ähnliches Problem haben:

Ich habe Windows Vista 64-Bit in einer Maschine im Hyper-V installiert, dort das Programm "nosmp.exe" und den Wert r_smp 1 in der q3config.cfg - daraufhin sind die Ruckler verschwunden.

Danke für die Tipps,

R.D.