WinFuture-Forum.de: Batch: Informationen Aus Registry Auslesen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Batch: Informationen Aus Registry Auslesen


#1 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 03. Juli 2008 - 12:18

Hiho

Ich hab so nen zusätzlichen Auftrag erhalten wo ich ne Batch Datei schreiben soll, welche Informationen aus der Registry auslesen soll und dann in ein Log File schreiben soll. Das Problem ist, ich habe mit Batch noch nie Informationen aus der Registry ausgelesen. Google zeigt mir auf den ersten Blick nur Sachen mit C++ oder ähnlichem.
0

Anzeige



#2 Mitglied ist offline   Samstag 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.023
  • Beigetreten: 14. Juli 07
  • Reputation: 542
  • Geschlecht:unbekannt

geschrieben 03. Juli 2008 - 12:24

FOR /F "skip=2 usebackq tokens=3 delims=	" %%i IN (`reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v RegisteredOwner`) DO set C:\reg.txt

Könnte funktionieren, kanns aber nicht testen.

Dieser Beitrag wurde von Samstag bearbeitet: 03. Juli 2008 - 12:24

0

#3 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 03. Juli 2008 - 12:33

Jo, auf den bin ich vorher auch gestossen, aber bei mir funktioniert der nicht so richtig, zumindest wenn ich den aus dem CMD ausführe. Ich bin aber auf den REG EXPORT Schlüssel gestossen, der scheint mir vielversprechend.

Um konkret zu werden. Ich muss folgende Sachen aus der Registry auslesen können (wenn möglich):
- Partitionen
- Dateisystem der Partitionen
- Berechtigungen (bin mir nicht sicher ob sowas geht mit Batch)
- Anzeigeeinstellungen
- Tastaturlayout

Dieser Beitrag wurde von Erte bearbeitet: 03. Juli 2008 - 13:58

0

#4 Mitglied ist offline   Samstag 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.023
  • Beigetreten: 14. Juli 07
  • Reputation: 542
  • Geschlecht:unbekannt

geschrieben 03. Juli 2008 - 14:42

Achso, ja, um ihn aus der CMD auszuführen musst du das eine % weglassen, also
FOR /F "skip=2 usebackq tokens=3 delims=	" %i IN (`reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v RegisteredOwner`) DO set C:\reg.txt

Das andere mit den %% ist für eine Batch, und nach der wurde ja eigentlich gefragt?

Dieser Beitrag wurde von Samstag bearbeitet: 03. Juli 2008 - 14:42

0

#5 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 03. Juli 2008 - 14:46

Achso, ok, danke dir.

Hast du evtl. ne Idee wo ich die oben geschriebenen Informationen auslesen könnte?
Hab mal die Registry nach gewissen Stichwörtern durchsucht, aber kommt nichts brauchbares.

Dieser Beitrag wurde von Erte bearbeitet: 03. Juli 2008 - 14:47

0

#6 Mitglied ist offline   MacGyver 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 08. Februar 03
  • Reputation: 0

geschrieben 03. Juli 2008 - 15:24

Alternativ möchte ich hier noch die freie Skriptsprache AutoIt in dem Raum werfen.
Super einfach und super mächtig. Damit müsste das gehen.
Es lässt sich damit auch leicht eine Standalone-Exe erstellen.
0

#7 Mitglied ist offline   MacGyver 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 08. Februar 03
  • Reputation: 0

geschrieben 03. Juli 2008 - 15:39

Hab mal kurz ein paar Funtionen von AutoIt, womit Du die gewünschten Infos auslesen kannst:

; Filesystem:
$var = DriveGetFileSystem( "c:\" )
MsgBox(4096,"File System Type:", $var) // liefert z.b. "NTFS"

; Rechte (Siehe Doku)
If IsAdmin() Then MsgBox(0, "", "Admin rights detected")

; Tastaturlayout
$var = @KBLayout
MsgBox(4096,"Keyboard Layount:", $var) // siehe Doku

; Anzeigeeinstellung:
$var=@DesktopHeight ; Height of the desktop screen in pixels. (vertical resolution)
$var=@DesktopWidth ; Width of the desktop screen in pixels. (horizontal resolution)
$var=@DesktopDepth ; Depth of the desktop screen in bits per pixel.
$var=@DesktopRefresh ; Refresh rate of the desktop screen in hertz.

; Für Partitons/Drive-Info gib's folgende Funktionen:
; DriveGetDrive, DriveGetFileSystem, DriveGetLabel, DriveGetSerial, DriveSetLabel, DriveSpaceFree, DriveSpaceTotal, DriveStatus
0

#8 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 03. Juli 2008 - 16:03

Muss dafür irgendwelche spezielle Software installiert sein? Ich brauche diese Informationen für meinen Chef, der will wenn er die Lehrlinge testweise PC's aufsetzten lässt, schnell die grundlegendsten Informationen haben, ohne ne halbe Ewigkeit suchen zu müssen. Wenn er dann noch spezielle Software muss ist das ein bisschen unbequem, aber ein Versuch wäre es wert.
0

#9 Mitglied ist offline   honos 

  • Gruppe: aktive Mitglieder
  • Beiträge: 99
  • Beigetreten: 25. April 04
  • Reputation: 0

geschrieben 03. Juli 2008 - 16:26

Hi!
Schau mal bei Windows Resource Kit. Und da ist auch ein tool dabei mit dem du die Registry per CMD bearbeiten kannst.
Kannst die .exe datei ja einfach im selben verzeichnis wie die batch datei kopieren.

Grüße Honos

*Link*

Dieser Beitrag wurde von honos bearbeitet: 03. Juli 2008 - 16:27

0

#10 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 03. Juli 2008 - 16:53

Windows Resource Kit? Was meinst du damit? Von der Microsoft Seite?
Achso, auf der CD?

Dieser Beitrag wurde von Erte bearbeitet: 03. Juli 2008 - 16:56

0

#11 Mitglied ist offline   MacGyver 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 08. Februar 03
  • Reputation: 0

geschrieben 03. Juli 2008 - 16:56

Die kompilierte AutoIt-Standalone-Exe braucht keine sonstigen installierten Dateien.
Nur die Exe reicht schon.
Zum Entwickeln und Testen musst Du natürlich AutoIt installiert haben.
0

#12 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 03. Juli 2008 - 17:04

Achso, dann is das ja ne nette Sache.
0

#13 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 04. Juli 2008 - 07:07

Hiho

Bin euch wirklich dankbar für den Tipp mit AutoIt. Ich habe mal deinen Code den du gepostet hast eingefügt und kompiliert. Das Erste mit dem Filesystem geht, jedoch gibt er ihm nachhinein einen Error aus:
AutoIt Error

Line -1:

Error: Illegal text at the end of statement (one statement per line).

Na ja jedenfalls, kann ich in AutoIt irgendwie Sprungmarken definieren oder geht der einfach alles der Reihe nach? Und kann mir wer ne gute Tutorial Seite für AutoIt geben? Ich blick zwar einigermassen durch bei dem Code, nur weiss ich z. B. nicht genau wie ich dem sagen kann dass wen er das Dateisystem postet, noch einen Satz wie "Das Dateisystem von C: ist: NTFS". Ein Tutorial wär zumindest mal ein Anfang, aber ich google auch nochn bisschen.
0

#14 Mitglied ist offline   MacGyver 

  • Gruppe: Mitglieder
  • Beiträge: 17
  • Beigetreten: 08. Februar 03
  • Reputation: 0

geschrieben 04. Juli 2008 - 16:27

Ich weiss jetzt nicht, ob's irgendwo ein Tutorial zu AutoIt gibt.
Aber schau Dir einfach mal die Beispiele zu den einzelnen Befehlen in der Hilfe an.
Ist wirklich sehr einfach!

Gotos und Sprungmarken gibt es nicht - ist ja unter Programmierern verpöhnt ;O)
Mach das lieber mit if .. then .. endif oder if .. then .. else endif - Konstruktionen.


hier nochmal die überarbeitete Version, sorry hatte das nur schnell eingetippt - eher schematisch:
(Mit If .. then .. else)

; Filesystem:
$var = DriveGetFileSystem( "c:\" )
MsgBox(0,"File System Type:", $var) ; liefert z.b. "NTFS"

; Rechte (Siehe Doku)
If IsAdmin() Then
MsgBox(0, "Admin rights:", "Admin rights detected")
else
MsgBox(0, "Admin rights:", "No Admin rights detected")
Endif

; Tastaturlayout
$var = @KBLayout
MsgBox(0,"Keyboard Layount:", $var) ; siehe Doku

; Anzeigeeinstellung:
MsgBox(0,"Bildschirm Höhe:",@DesktopHeight )
MsgBox(0,"Bildschirm Breite:",@DesktopWidth )
MsgBox(0,"Bildschirm Refresh Rate:",@DesktopRefresh )

; Für Partitons/Drive-Info gib's folgende Funktionen:
; DriveGetDrive, DriveGetFileSystem, DriveGetLabel, DriveGetSerial, DriveSetLabel, DriveSpaceFree, DriveSpaceTotal, DriveStatus

Dieser Beitrag wurde von MacGyver bearbeitet: 04. Juli 2008 - 16:32

0

#15 Mitglied ist offline   Erte 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.084
  • Beigetreten: 03. Januar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 06. Juli 2008 - 13:14

Hiho

Danke dir für deine Hilfe. Hab mich während des wartens mal selber an die Arbeit gemacht, und dabei ist folgendes rausgekommen:
;Anzeigeeinstellungen
$var = @DesktopWidth
$var2 = @DesktopHeight
$var3 = @DesktopDepth
$var4 = @DesktopRefresh
MsgBox(64, "Auflösung", "Die Auflösung beträgt " & $var & " x " & $var2 & @CRLF & "Die Farbtiefe beträgt " & $var3 & " bit" & @CRLF & "Die Bildwiederholfrequenz beträgt " & $var4 & " Hertz")

;Datum
$var5 = @MDAY
$var6 = @MON
$var7 = @YEAR
MsgBox(64, "Datum", "Laut System ist heute der " & $var5 & "." & $var6 & "." & $var7)

;Tastaturlayout
$var8 = @KBLayout
if $var8 = 0807 then
$var8 = "Deutsch Schweiz"
else
$var8 = "nicht Deutsch Schweiz!"
endif
MsgBox(64, "Spracheinstellungen", "Das Tastaturlayout ist " & $var8)
MsgBox(64, "Spracheinstellungen", "Es wird sich ein Fenster öffnen zur Überprüfung der Standorteinstellung (ganz unten im Fenster)")
run ("rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0")

;Laufwerke
$var10 = DriveGetDrive( "all" )
$drives  = ""
If NOT @error Then
	For $i = 1 to $var10[0]
		$drives = $drives & @CRLF &$var10[$i]
	Next
EndIf

MsgBox(64,"Alle Laufwerke", $drives)

;Laufwerke hab ich aus einem anderen Board, nur versteh ich den Teil beim if nicht ganz. Was $i = 1 to $var10[0] ......
bedeuten soll. Hab da irgendwo unter Google ne Definition gefunden von dem, aber find's irgendwie nicht mehr.
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0