Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Funktion in Hauptscript integrieren

Frage Entwicklung VB for Applications

Mitglied: RetroDude

RetroDude (Level 1) - Jetzt verbinden

04.06.2010 um 16:38 Uhr, 3419 Aufrufe, 2 Kommentare

Hallo. Ich habe zwecks Registrymutation einen Script gebastelt. Im Hauptscript wird überprüft, ob ein Flagkey existiert oder nicht. Falls dieser bereits existiert, macht er nix. Falls dieses Flag nicht existiert arbeitet er zwei separate Scripts ab, welche mit Hilfe einer Funktion gewährleisten, dass die gewünschten Keys inkl. Inhalt gelöscht werden. Anschliessend wird das Flag geschrieben. Nun zu meiner Frage. Was muss ich ändern um dies in ein und demselben Hauptscript zu tun? Meine Lösung funktioniert zwar, ist aber nicht wirklich elegant..
Bin für Anregungen dankbar!
Grüsse

' Hauptscript.vbs

Const HKEY_CURRENT_USER = &H80000001

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & _
strComputer & "\root\default:StdRegProv")
Set WshShell = WScript.CreateObject("WScript.Shell")

strKeyPath = "SOFTWARE\ApplikationX\LaunchMethods"
strValueName = "Flag"
strValueName1 = "Dummykey"

objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue

If IsNull(strValue) Then

objRegistry.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strValueName1

WshShell.run "DEL_KEY1.VBS"
WshShell.run "DEL_KEY2.VBS"

Else

End If

' DEL_KEY1.vbs

Const HKEY_CURRENT_USER = &H80000001

Set wmiLocator = CreateObject("WbemScripting.SWbemLocator")

Set wshNetwork = CreateObject("WScript.Network")

Set wmiNameSpace = wmiLocator.ConnectServer(wshNetwork.ComputerName, "root\default")
Set objRegistry = wmiNameSpace.Get("StdRegProv")


sPath = "SOFTWARE\ApplikationX\LaunchMethods\DB1"

lRC = DeleteRegEntry(HKEY_CURRENT_USER, sPath)

Function DeleteRegEntry(sHive, sEnumPath)
lRC = objRegistry.DeleteKey(sHive, sEnumPath)

If (lRC <> 0) Then

On Error Resume Next

lRC = objRegistry.EnumKey(HKEY_CURRENT_USER, sEnumPath, sNames)

For Each sKeyName In sNames
If Err.Number <> 0 Then Exit For
lRC = DeleteRegEntry(sHive, sEnumPath & "\" & sKeyName)
Next

On Error Goto 0

lRC = objRegistry.DeleteKey(sHive, sEnumPath)

End If

End Function

' DEL_KEY2.vbs

Const HKEY_CURRENT_USER = &H80000001

Set wmiLocator = CreateObject("WbemScripting.SWbemLocator")

Set wshNetwork = CreateObject("WScript.Network")

Set wmiNameSpace = wmiLocator.ConnectServer(wshNetwork.ComputerName, "root\default")
Set objRegistry = wmiNameSpace.Get("StdRegProv")


sPath = "SOFTWARE\ApplikationX\LaunchMethods\DB2"

lRC = DeleteRegEntry(HKEY_CURRENT_USER, sPath)

Function DeleteRegEntry(sHive, sEnumPath)
lRC = objRegistry.DeleteKey(sHive, sEnumPath)

If (lRC <> 0) Then

On Error Resume Next

lRC = objRegistry.EnumKey(HKEY_CURRENT_USER, sEnumPath, sNames)

For Each sKeyName In sNames
If Err.Number <> 0 Then Exit For
lRC = DeleteRegEntry(sHive, sEnumPath & "\" & sKeyName)
Next

On Error Goto 0

lRC = objRegistry.DeleteKey(sHive, sEnumPath)

End If

End Function
Mitglied: bastla
04.06.2010 um 19:14 Uhr
Hallo RetroDude!

Sollte sich grundsätzlich etwa so machen lassen:
01.
' Hauptscript.vbs 
02.
 
03.
Const HKEY_CURRENT_USER = &H80000001 
04.
 
05.
strComputer = "." 
06.
Set objRegistry = GetObject("winmgmts:\\" & _ 
07.
strComputer & "\root\default:StdRegProv") 
08.
Set WshShell = WScript.CreateObject("WScript.Shell") 
09.
 
10.
strKeyPath = "SOFTWARE\ApplikationX\LaunchMethods" 
11.
strValueName = "Flag" 
12.
strValueName1 = "Dummykey" 
13.
 
14.
objRegistry.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue 
15.
 
16.
If IsNull(strValue) Then 
17.
    objRegistry.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strValueName1 
18.
    DEL_KEYS 
19.
End If 
20.
 
21.
'################# 
22.
Sub DEL_KEYS 
23.
 
24.
Set wmiLocator = CreateObject("WbemScripting.SWbemLocator") 
25.
Set wshNetwork = CreateObject("WScript.Network") 
26.
 
27.
Set wmiNameSpace = wmiLocator.ConnectServer(wshNetwork.ComputerName, "root\default") 
28.
Set objRegistry = wmiNameSpace.Get("StdRegProv") 
29.
 
30.
sPath = "SOFTWARE\ApplikationX\LaunchMethods\DB1" 
31.
lRC = DeleteRegEntry(HKEY_CURRENT_USER, sPath) 
32.
 
33.
sPath = "SOFTWARE\ApplikationX\LaunchMethods\DB2" 
34.
lRC = DeleteRegEntry(HKEY_CURRENT_USER, sPath) 
35.
 
36.
End Sub 
37.
 
38.
'################# 
39.
Function DeleteRegEntry(sHive, sEnumPath) 
40.
lRC = objRegistry.DeleteKey(sHive, sEnumPath) 
41.
 
42.
If (lRC <> 0) Then 
43.
    On Error Resume Next 
44.
    lRC = objRegistry.EnumKey(HKEY_CURRENT_USER, sEnumPath, sNames) 
45.
 
46.
    For Each sKeyName In sNames 
47.
        If Err.Number <> 0 Then Exit For 
48.
        lRC = DeleteRegEntry(sHive, sEnumPath & "\" & sKeyName) 
49.
    Next 
50.
 
51.
    On Error Goto 0 
52.
 
53.
    lRC = objRegistry.DeleteKey(sHive, sEnumPath) 
54.
 
55.
End If 
56.
 
57.
End Function 
58.
'#################
Eigentlich wäre die Verwendung des Unterprogrammes gar nicht nötig - Du könntest die Zeilen 24 - 34 einfach als Ersatz für den Aufruf in Zeile 18 einfügen ...

Grüße
bastla

P.S.: Falls Dir die von mir verwendete Formatierung für das Script auch besser gefällt: Quellcode, Code oder HTML Snippets ...
Bitte warten ..
Mitglied: RetroDude
08.06.2010 um 16:59 Uhr
Hallo Bastla

Danke! Funktioniert prima.

Gruss
Bitte warten ..
Ähnliche Inhalte
Windows Installation
PW vergeben mit der Installation und in das OS integrieren (5)

Frage von NAFNON zum Thema Windows Installation ...

LAN, WAN, Wireless
Dlink als WLAN Client ins netz integrieren (22)

Frage von fundave3 zum Thema LAN, WAN, Wireless ...

Python
gelöst Python GUI Button funktionen? (7)

Frage von Scuzzy zum Thema Python ...

Batch & Shell
Problem mit Funktion und Combobox (7)

Frage von Druide83 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

Windows 7
Bluesreens unternehmensweit (19)

Frage von SYS64738 zum Thema Windows 7 ...

LAN, WAN, Wireless
IP Adressen - Modem - Switch - Accesspoint (18)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
gelöst DNS ins mehreren Subnetzen (15)

Frage von joerg zum Thema Windows Netzwerk ...