Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBS - Reg-Werte in Array einlesen und später wieder auslesen?

Frage Entwicklung VB for Applications

Mitglied: gdnmarc

gdnmarc (Level 1) - Jetzt verbinden

25.09.2008, aktualisiert 18.10.2012, 6776 Aufrufe, 7 Kommentare

Hallo zusammen,

ich möchte eine unbekannte Anzahl von DWORD Reg-Einträgen in einem vorgebenen Schlüssel in ein Array einlesen.

Später möchte ich dann über ein anderes Script welches ich in dem o.a Script aufrufe entspreche benötigte Werte auslesen, bzw. weiterverwenden.

1.) wie kann ich ein solches Array erstellen, um wertnamen und wertinhalt in ein array einzulesen
2.) wie kann ich wertinhalte bestimmter wertnamen über ein anderes script wieder auslesen, bzw. weiterverweden (wscript.echo)

Also...Wert x mit Inhalt 1 und Wert y mit Inhalt 2 aus Schlüssel abc in ein Array einlesen und in einem eingebundenen Script dann Inhalte der Werte x und y auslesen.

Ich hoffe mich versteht jemand und kann mir ein wenig weiterhelfen!!!!!!

1000Dank!

Viele Grüße!Q!
Mitglied: bastla
25.09.2008 um 18:42 Uhr
Hallo gdnmarc!

So ganz verstehe ich Dein Vorhaben nicht; vor allem: wann soll das zweite Script gestartet werden, und warum liest dieses nicht einfach selbst die Werte ein?

Anyhow - das Einlesen könnte so aussehen (wobei hier verschiedene Möglichkeiten - mehrdimensionales Array, zwei eindimensionale Arrays, Dictionary - für das Ergebnis in Frage kämen):
01.
Const HKLM = &H80000002 
02.
Const DWORD = 4 
03.
strComputer = "." 
04.
 
05.
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
06.
    strComputer & "\root\default:StdRegProv") 
07.
  
08.
sKey = "Software\Microsoft\Windows NT\CurrentVersion\FontMapper" 
09.
objReg.EnumValues HKLM, sKey, aNames, aTypes 
10.
 
11.
'nur ein Gesamtarray 
12.
Dim aEntries 
13.
ReDim aEntries(UBound(aNames), 1) 
14.
'eigenes Array für Werte 
15.
Dim aValues 
16.
ReDim aValues(UBound(aNames)) 
17.
'Dictionary 
18.
Set d = CreateObject("Scripting.Dictionary") 
19.
 
20.
For i = 0 To UBound(aNames) 
21.
    If aTypes(i) = DWORD Then 
22.
        objReg.GetDWORDValue HKLM, sKey, aNames(i), Value 
23.
        'nur ein Gesamtarray 
24.
        aEntries(i, 0) = aNames(i) 
25.
        aEntries(i, 1) = Value 
26.
        'eigenes Array für Werte 
27.
        aValues(i) = Value 
28.
        'Dictionary 
29.
        d.Add aNames(i), Value 
30.
    End If 
31.
Next 
32.
 
33.
'nur ein Gesamtarray 
34.
For i = 0 To UBound(aEntries) 
35.
    WScript.Echo aEntries(i, 0) & ": " & aEntries(i, 1) 
36.
Next 
37.
WScript.Echo "-----------------------" 
38.
'eigenes Array für Werte 
39.
For i = 0 To UBound(aNames) 
40.
    WScript.Echo aNames(i) & ": " & aValues(i) 
41.
Next 
42.
WScript.Echo "-----------------------" 
43.
'Dictionary 
44.
For Each Key In d.Keys 
45.
    WScript.Echo Key & ": " & d.Item(Key) 
46.
Next
Grüße
bastla

P.S.: Da Du den entsprechenden Key nicht genannt hast, musste ich mir selbst ein Beispiel suchen ...
Bitte warten ..
Mitglied: gdnmarc
25.09.2008, aktualisiert 18.10.2012
Hallo bastla!!!

Ein riesen Danke an Dich....sagmal...ich habe drei Anfragen gestellt und jedes Mal von Dir ein fertiges Script welches auf Anhieb funktioniert zurückbekommen!! Ich bin Dir sehr dankbar!!!!!!!!!!!!!!!!!! Du hattest mir auch mal ein Script erstellt, welches in Registry mir den höchsten Schlüssel aus der Registry ausliest: http://www.administrator.de/forum/vbscript-zum-auslesen-eines-bestimmte ... In diesem Schlüssel finde ich Werte die ich zur Zeit fest auslese....also gebe mir Inhalt von Key 1 usw. aus und mappe zum Beispiel dann ein Laufwerk oder ähnliches mit den Werten. Das 1. Script soll als Basis dienen und mit diesem Script alle Werte in ein Array lesen. Danach soll in diesem Script einfach ein weiteres Script aufgerufen werden, um diese Daten zu verarbeiten (copy, reg, suchen und ersetzen, was gerade anliegt) Diese Scripte soll jeder selber erstelle und einfach in das Hauptscript einbinden. In den individuellen Scripten muss der Inhalt des Arrays aber vorhanden sein, damit die Werte auch weiterverarbeitet werden können. Geht das?

Danke, danke, danke!!

LG, Marc
Bitte warten ..
Mitglied: bastla
25.09.2008 um 19:14 Uhr
Hallo gdnmarc!

Ohne mich jetzt wirklich hineingedacht zu haben: Am einfachsten wäre es aus meiner Sicht, alles in ein Script zu packen, wobei das Auslesescript zum Erstellen des Arrays/Dictionary als Hauptprogramm zuerst ausgeführt werden müsste, und alle weiteren Scripts danach einfach als "Sub" aufgerufen werden könnten, wobei (da Variablen in VBScript ohnehin immer global sind) diese Scripts dann automatisch Zugriff auf das Array oder Dictionary hätten.

Grüße
bastla
Bitte warten ..
Mitglied: gdnmarc
25.09.2008 um 19:17 Uhr
Hi Bastla,

wie kann ich mir das den vorstellen, das diese als Sub aufgerufen werden können?

Thx!!!

Gruß, Marc
Bitte warten ..
Mitglied: bastla
25.09.2008 um 19:41 Uhr
Hallo gdnmarc!

Im Prinzip so, wie ich das oben schon integriert hatte, wobei ich gleich ohne Verwendung von "Subs" die Ausgabevarianten habe laufen lassen - mit Aufteilung in einzelne "Subs" könnte das so aussehen:
01.
Const HKLM = &H80000002 
02.
Const DWORD = 4 
03.
strComputer = "." 
04.
 
05.
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
06.
    strComputer & "\root\default:StdRegProv") 
07.
  
08.
sKey = "Software\Microsoft\Windows NT\CurrentVersion\FontMapper" 
09.
objReg.EnumValues HKLM, sKey, aNames, aTypes 
10.
 
11.
'nur ein Gesamtarray 
12.
Dim aEntries 
13.
ReDim aEntries(UBound(aNames), 1) 
14.
'eigenes Array für Werte 
15.
Dim aValues 
16.
ReDim aValues(UBound(aNames)) 
17.
'Dictionary 
18.
Set d = CreateObject("Scripting.Dictionary") 
19.
 
20.
For i = 0 To UBound(aNames) 
21.
    If aTypes(i) = DWORD Then 
22.
        objReg.GetDWORDValue HKLM, sKey, aNames(i), Value 
23.
        'nur ein Gesamtarray 
24.
        aEntries(i, 0) = aNames(i) 
25.
        aEntries(i, 1) = Value 
26.
        'eigenes Array für Werte 
27.
        aValues(i) = Value 
28.
        'Dictionary 
29.
        d.Add aNames(i), Value 
30.
    End If 
31.
Next 
32.
 
33.
'Aufruf der Unterprogramme 
34.
NurEinArray 
35.
WScript.Echo "-----------------------" 
36.
Eigenes 
37.
WScript.Echo "-----------------------" 
38.
Dict 
39.
'################## 
40.
'Ende Hauptprogramm 
41.
'################## 
42.
 
43.
'Unterprogramme 
44.
Sub NurEinArray 
45.
'nur ein Gesamtarray 
46.
For i = 0 To UBound(aEntries) 
47.
    WScript.Echo aEntries(i, 0) & ": " & aEntries(i, 1) 
48.
Next 
49.
End Sub 
50.
 
51.
Sub Eigenes 
52.
'eigenes Array für Werte 
53.
For i = 0 To UBound(aNames) 
54.
    WScript.Echo aNames(i) & ": " & aValues(i) 
55.
Next 
56.
End Sub 
57.
 
58.
Sub Dict 
59.
'Dictionary 
60.
For Each Key In d.Keys 
61.
    WScript.Echo Key & ": " & d.Item(Key) 
62.
Next 
63.
End Sub
Noch genauer wäre es, dem jeweiligen "Sub" beim Aufruf das Array als Parameter zu übergeben - das sähe (bis Zeile 31 würde sich dadurch nichts ändern) dann so aus:
01.
'Aufruf der Unterprogramme 
02.
NurEinArray aEntries 
03.
WScript.Echo "-----------------------" 
04.
Eigenes aNames, aValues 
05.
WScript.Echo "-----------------------" 
06.
Dict d 
07.
'################## 
08.
'Ende Hauptprogramm 
09.
'################## 
10.
 
11.
'Unterprogramme 
12.
Sub NurEinArray(aE) 
13.
'nur ein Gesamtarray 
14.
For i = 0 To UBound(aE) 
15.
    WScript.Echo aE(i, 0) & ": " & aE(i, 1) 
16.
Next 
17.
End Sub 
18.
 
19.
Sub Eigenes(aN, aV) 
20.
'eigenes Array für Werte 
21.
For i = 0 To UBound(aN) 
22.
    WScript.Echo aN(i) & ": " & aV(i) 
23.
Next 
24.
End Sub 
25.
 
26.
Sub Dict(dic) 
27.
'Dictionary 
28.
For Each Key In dic.Keys 
29.
    WScript.Echo Key & ": " & dic.Item(Key) 
30.
Next 
31.
End Sub
Damit blieben die einzelnen Scripts dann tatsächlich "eigenständig" ...

Grüße
bastla
Bitte warten ..
Mitglied: gdnmarc
26.09.2008 um 11:43 Uhr
Hi Bastla,

thx vielen Dank!! Ist so ein Sub das gleiche wie eine Funktion die über ein Script aufgerufen werden kann? Oder wäre eine Funktion nochmals etwas anderes.

Sorry für die blöden Fragen

Vielen Dank und Gruß,

Marc
Bitte warten ..
Mitglied: bastla
26.09.2008 um 12:45 Uhr
Hallo gdnmarc!

"Sub" und "Function" sind ähnliche Konstrukte, wobei der größte Unterschied eigentlich darin liegt, dass eine "Function" einen Rückgabewert erzeugt (oder zumindest erzeugen sollte) ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Leere Array-Werte aus einem Array entfernen
gelöst Frage von ToniHoBatch & Shell3 Kommentare

Hallo zusammen, ich bin dabei ein Powershell-Script zu schreiben, welches diverse Reports generieren kann. Für die Eingabe von SamAccountNames ...

Batch & Shell
Variable aus VBS in Batch einlesen
gelöst Frage von racer1601Batch & Shell4 Kommentare

Hallo ich habe das Problem das ich die Variable "Ordner" aus einem VBS Script nicht in meine Batch bekomme. ...

Batch & Shell
Wert aus Array ausschliessen PowerShell
gelöst Frage von ivaylo53Batch & Shell2 Kommentare

Guten Morgen Community, irgendiwe komme ich bei diesem Problem nicht weiter. Ich habe Zwei Objekte $alCSVUser und $alADUser. Diese ...

Batch & Shell
PowerShell Wert in Array finden
gelöst Frage von derhoeppiBatch & Shell7 Kommentare

Hallo, in meinem Projekt lese ich einen Eintrag aus einer Combobox aus. Dieser wird in eine Variable / Objekt ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser7 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 3 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...