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

gelöst Registry Zeichenfolge je nach Bedingung ändern

Mitglied: spacyfreak

spacyfreak (Level 2) - Jetzt verbinden

10.02.2008, aktualisiert 13.02.2008, 6985 Aufrufe, 2 Kommentare

Ich will folgendes erreichen:

Ein (VBS?)-Script soll prüfen, ob in der Registry unter
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

eine Zeichenfolge existiert, die "GinaDLL" heisst.

Ferner soll der WERT dieser Zeichenfolge geprüft werden.
Ist der Wert "csgina.dll", soll der User eine Meldung erhalten, die lautet
"Zur Zeit startet der Cisco VPN Client vor ihrer Windows Anmeldung. Möchten Sie stattdessen dass der Juniper VPN Client vor der Anmeldung an Ihrem PC gestartet wird damit Sie sich nach Aufbau der VPN Verbindung an Ihrer Domäne anmelden können?"

Wählt der User "Ja" soll der Wert der Zeichenfolgle "GinaDLL" geändert werden in "dsGinaLoader.dll".
Wählt der User "Nein" soll der Wert so bleiben wie er ist.

Ist der Wert der Zeichenfolge dagegen "dsGinaLoader.dll" soll der User den Hinweis erhalten:
"Zur Zeit startet der Juniper VPN Client vor ihrer Windows Anmeldung. Möchten Sie stattdessen dass der Cisco VPN Client vor der Anmeldung an Ihrem PC gestartet wird damit Sie sich nach Aufbau der VPN Verbindung an Ihrer Domäne anmelden können?"

Der User sollte auch wählen können, ob er keinen von beiden VPN Clients vor dem winlogen starten will.
Wenn er sich dazu entscheidet, muss die Zeichenfolge "GinaDLL" gelöscht werden und ein Hinweis kommen dass der PC neu gestartet werden soll.

Wenn die Zeichenfolge "GinaDLL" garnicht existiert, soll das Script den User fragen:
"Möchten Sie den Juniper VPN Client vor der Anmeldung an Ihrem Windows PC starten damit Sie sich direkt in Ihrer Domäne anmelden können?"

Ich denke ein Programmer kloppt das Script in 10 Min zusammen. Ich bräuchte geschätzte 3 Monate dafür.
Mitglied: bastla
11.02.2008 um 22:21 Uhr
Hallo e-m-d-k-h!

Ich denke ein Programmer kloppt das Script in 10 Min zusammen. Ich bräuchte geschätzte 3 Monate dafür.
Na ja, da ich kein Programmierer bin, war's bei mir ein Mittelwert ...

Versuch es mal damit:
01.
Const RROOT = "HKLM"
02.
Const RKEY = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
03.
Const RVALUE = "GinaDLL"
04.
Const JUNIPER = "dsGinaLoader.dll"
05.
Const CISCO = "csgina.dll" 
06.

07.
RPath = RROOT & "\" & RKEY & "\" & RVALUE
08.
Set WshShell = WScript.CreateObject("WScript.Shell")
09.

10.
If RegistryValueExists(RROOT, RKEY, RVALUE) Then 'Reg-Wert vorhanden?
11.
	Value = WshShell.RegRead(RPath)
12.
	Select Case LCase(Value)
13.
	Case LCase(CISCO)
14.
		Choice = MsgBox("Zur Zeit startet der Cisco VPN Client vor ihrer Windows Anmeldung." & vbCrLF & vbCrLF & _
15.
			_
16.
			"Möchten Sie stattdessen, dass der Juniper VPN Client vor der Anmeldung an Ihrem PC gestartet wird," & vbCrLF & _
17.
			"damit Sie sich nach Aufbau der VPN Verbindung an Ihrer Domäne anmelden können?" & vbCrLF & vbCrLF & _
18.
			_
19.
			"Wählen Sie 'Ja' für Juniper, 'Abbrechen' für Cisco oder 'Nein' für das Entfernen des VPN Client", vbYesNoCancel + vbQuestion, "Juniper VPN Client starten?")
20.
		If Choice = vbYes Then
21.
			WshShell.RegWrite RPath, JUNIPER, "REG_SZ"
22.
		ElseIf Choice = vbNo Then
23.
			WshShell.RegDelete RPath
24.
			MsgBox "Sie müssen Ihren Rechner neu starten!", vbInformation, "Neustart erforderlich ..."
25.
		End If
26.
	Case LCase(JUNIPER)
27.
		Choice = MsgBox("Zur Zeit startet der Juniper VPN Client vor ihrer Windows Anmeldung." & vbCrLF & vbCrLF & _
28.
			_
29.
			"Möchten Sie stattdessen dass der Cisco VPN Client vor der Anmeldung an Ihrem PC gestartet wird," & vbCrLF & _
30.
			"damit Sie sich nach Aufbau der VPN Verbindung an Ihrer Domäne anmelden können?" & vbCrLF & vbCrLF & _
31.
			_
32.
			"Wählen Sie 'Ja' für Cisco, 'Abbrechen' für Juniper oder 'Nein' für das Entfernen des VPN Client", vbYesNoCancel + vbQuestion, "Cisco VPN Client starten?")
33.
		If Choice = vbYes Then
34.
			WshShell.RegWrite RPath, CISCO, "REG_SZ"
35.
		ElseIf Choice = vbNo Then
36.
			WshShell.RegDelete RPath
37.
			MsgBox "Sie müssen Ihren Rechner neu starten!", vbInformation, "Neustart erforderlich ..."	
38.
		End If
39.
	Case Else 'sollte es nicht geben
40.
		MsgBox "Unbekannter Eintrag '" & Value & "' in der Registry." & vbCrLF & vbCrLF & _
41.
			"Bei riesigen Nebenwirkungen essen Sie eine Entschlackungsbeilage und schlagen Sie Ihren Arzt oder Administrator!", vbCritical, "Das darf doch wohl nicht wahr sein!"
42.
		' WshShell.RegDelete RPath 'Vielleicht besser löschen? Falls ja, Kommentarzeichen am Anfang der Zeile entfernen.
43.
	End Select
44.
Else
45.
	Choice = MsgBox("Möchten Sie den Juniper VPN Client vor der Anmeldung an Ihrem Windows PC starten," & vbCrLF & "damit Sie sich direkt in Ihrer Domäne anmelden können?", vbYesNo + vbQuestion, "Juniper VPN Client starten?")
46.
	If Choice = vbYes Then
47.
		WshShell.RegWrite RPath, JUNIPER, "REG_SZ"
48.
	End If
49.
End If
50.

51.
Function RegistryValueExists(LNGHKEY, strKey, strValue)
52.
'auf Basis: http://www.visualbasicscript.com/m_35278/tm.htm
53.
Const HKLM = &H80000002
54.
Const HKCR = &H80000000
55.
Const HKCU = &H80000001
56.
Const HKUSERS = &H80000003
57.
RegistryValueExists = False
58.
If LNGHKEY = "HKLM" Then hkRoot = HKLM
59.
If LNGHKEY = "HKCU" Then hkRoot = HKCU
60.
If LNGHKEY = "HKCR" Then hkRoot = HKCR
61.
If LNGHKEY = "HKUSERS" Then hkRoot = HKUSERS
62.
Set reg = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
63.
reg.EnumValues hkRoot, strKey, aValueNames, aValueTypes
64.
If Not IsNull(aValueNames) Then
65.
	For Each s In aValueNames
66.
		If LCase(s)=LCase(strValue) Then
67.
			RegistryValueExists = True
68.
			Exit Function
69.
		End If
70.
	Next
71.
End If
72.
End Function
Damit die User für die verschiedenen Optionen (Client beibehalten, ändern, entfernen) nur eine einzige Schaltfläche betätigen müssen, es andererseits in VBS in dieser Hinsicht nur beschränkte Möglichkeiten gibt, wirst Du hinsichtlich der Texte und Optionen vielleicht noch nachbessern wollen (zB immer "Ja" für "Juniper"), aber das Gerüst sollte so passen.

Die Alternative wäre ansonsten, zunächst abzufragen, ob ein bestehender Client entfernt werden soll und dann, in einer zweiten MessageBox, ob der Client gewechselt werden soll - auch nicht wirklich elegant, wie ich finde.

Haben übrigens die User das Recht, in HKLM zu schreiben?

Grüße
bastla
Bitte warten ..
Mitglied: spacyfreak
13.02.2008 um 22:25 Uhr
Danke Bastla, Du bist der HAMMER!
Schönen Abend noch.
EmdKh..
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell - if Bedingung
gelöst Frage von pps4535Batch & Shell4 Kommentare

Moin, moin, ich dachte ich mal einen neuen Thread auf, damit es geordnet abläuft :-) Hier habe ich schon ...

Windows 7
Batch IF Bedingung
gelöst Frage von JanSKIJWindows 73 Kommentare

Guten Morgen, seit mehreren Tagen versuche ich mich nun an meinem Script. Das meiste hab ich mir erfolgreich zusammen ...

C und C++
C if bedingung
gelöst Frage von MarabuntaC und C++1 Kommentar

Hallo, ich kann zwar kein C, habe aber trotzdem eine Frage: Was wird in der "if bedingung" alles geprüft ...

VB for Applications
Acc2003 - Bericht mit Bedingung
gelöst Frage von crack24VB for Applications5 Kommentare

Hallo, ich möchte einen Bericht anzeigen, der nur die Datensätze von einem Monat/Jahr anzeigen soll, was der User eingibt. ...

Neue Wissensbeiträge
LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 27 MinutenLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 1 TagWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 3 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 3 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Bekannte Drosselungen bei Providern ?
Frage von HenereLAN, WAN, Wireless15 Kommentare

Servus zusammen, in bereits angefangen, aber ich hoffe dass der Beitrag hier mehr Informationen bringt. Sind Portdrosselungen bzw gezielte ...

LAN, WAN, Wireless
Temporäre WLAN Verbindung für AD-Login
Frage von Christian.WidauerLAN, WAN, Wireless15 Kommentare

Hallo zusammen, ich weiß leider nicht unter welchem Begriff ich dafür suchen muss, daher habe ich bisher leider nichts ...

Netzwerkmanagement
Reverse Proxy für TCP und UDP Anfragen
gelöst Frage von flxklsNetzwerkmanagement13 Kommentare

Hallo zusammen, ich besitze einen Rootserver, der nur eine öffentliche IP besitzt und auf dem mehrere VMs laufen. Da ...

Netzwerkmanagement
Server bauen
Frage von JugendringNetzwerkmanagement11 Kommentare

Moin Moin, wir, der Jugendring sind ein ständig wachsender Verein mit vielen Unterprojekten. Da liegt es nah, dass wir ...