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, 3400 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
LAN, WAN, Wireless
Hat On Networks PL500PS WLAN-Funktion? (4)

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

iOS
IOS 10.2 bringt SOS-Funktion aufs iPhone

Link von sabines zum Thema iOS ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (27)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

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

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...