Tutorial zur Remoteinstallation von VNC
In diesem Tutorial wird beschrieben, wie es möglich ist, VNC oder dessen Derivate remote von einem Adminrechner auf mehreren Rechnern zu installieren/verteilen.
Tutorial zur Remoteinstallation von VNC
In diesem Tutorial wird beschrieben, wie es möglich ist, VNC oder dessen Derivate remote von einem Adminrechner auf mehreren Rechnern zu installieren/verteilen.
In meinem Szenario geht es darum, auf einem oder mehreren (besser natürlich allen) Domänenrechnern VNC zu installieren, den VNC Dienst einzurichten, Einstellungen automatisch vorzugeben und den Dienst letztendlich zu starten, inkl. einer möglichen Fehlerkontrolle bei der Installation.
Das Script ist in meiner Umgebung schon häufig fehlerfrei getestet worden, Fehlerfreiheit kann ich nicht garantieren, aber freue mich jetzt schon über Kritik
Um es mit anderen Worten zu sagen: Faulheit ist der Motor der IT-Adminstration *fg* und ich bin sehr faul... manchmal Es spart zumindest viel Zeit...
Also kommen wir erstmal zu unserem Rezept:
1.) Ein bissle VNC (In diesem Fall TightVNC, die winvnc.exe und die VNCHooks.dll)
2.) Eine Prise Registry-Kenntnisse (Wichtig: Wenn du keine Ahnung hast, was das ist, bitte NICHT weiterlesen)
3.) PsExec aus dem PsTools Paket von Sysinternals (jetzt mittlerweile Microsoft) zum verfeinern
4.) Batch Scripting Kochkenntnisse
5.) Administratorrechte auf dem Zielrechner oder den Zielrechnern (klar, oder?)
6.) Eine Netzwerkfreigabe, auf den alle Benutzer Lesezugriff haben. (z.b: \\fileserver\vncinst oder \\server\netlogon\vncinst oder oder oder - seid kreativ)
7.) Alles das was ich sonst noch vergessen haben könnte *lol* Salz, Pfeffer, Ehrgeiz die Batchdateien zu verstehn
Hier die Links:
(1) TightVNC Installer
(2) TightVNC: Nur die Dateien - ohne Installer
(3) PsExec und die PsTools
Zuerst laden wir uns alle benötigten Datein herunter. (1), (2) und (3)
Danach installieren wir VNC (1) auf einem jungfräulichen Rechner mit allen vorgegebenen Optionen, ausser der Dienstoption.
Diese wählen wir aus, so dass der Dienst eingerichetet wird und automatisch startet.
Beim ersten Start von dem VNC Dienst wird angemeckert, dass noch kein Passwort vergeben worden ist.
Hier geben wir das Passwort ein, was zukünftig bei allen Rechnern als Standardpasswort vergeben werden soll!
Aus (2) holen wir uns nun die Dateien Winvnc.exe und VNCHooks.dll raus und kopieren die Netzwerkfreigabe (siehe Rezept )
Jetzt holen wir uns die in VNC eingestellten Werte aus der Registrierung.
Ein manueller Export mit "regedit" ist zwar schön, aber das hier ist schöner
Diese beiden Dateien fügen wir zu einer Reg-Datei mit Namen TightVNC.reg zusammen. (Hinterher am besten einmal mit einem Doppelklick auf die Datei testen, ob der Import funktioniert.)
Diese Datei legen wir dann ebenfalls auf Netzwerkfreigabe!
Vergesst nicht die PsExec.exe (3) ebenfalls auf die Netzwerkfreigabe zu kopieren. Hierbei vergesst bitte nicht die pdh.dll Datei, da diese Datei ebenfalls zum Ausführen von PsExec notwendig ist.
Jetzt kommen wir zum Paste and Copy Teil:
Erstellt 2 Batchdateien "_serviceinstall_neu.bat" und "_vnc_remote_installation_neu.bat"
Die serviceinstall.bat ist hinterher dafür zuständig auf dem Client alle nötigen Einstellungen und die Installation unter %windir%\vnc vorzunehmen. Die andere Batch ist das Script was auf dem Administratorrechner ausgeführt werden muss
Nach dem Erstellen der Batchdatei, passt folgende Variablen nach euren Begebenheiten an:
vncregremote, vncexeremote, vnchooksremote, user, pass, pathtopsexec, pathtoserviceinstall
Info: Nach einer erfolgreichen Installation befindet sich auf dem Zielrechner eine vncinstall.log unter %windir%\vnc
Hier die beiden Dateien:
"_serviceinstall_neu.bat"
Und hier die Andere...
"_vnc_remote_installation_neu.bat"
Um zahlreiche Anteilnahme und Diskussion über diese Scripte wird natürlich gebeten.
Ggf. werden die Scripte daraufhin überarbeitet, verbessert und wieder hier eingestellt
Hinweis: Bitte denkt daran, dass VNC nicht perfekt in Punkto Sicherheit ist. (insbesondere bei dem eingestellten Passwort)
Die Kenner wissen hier, was ich meine.
Lieben Gruß
Markus@Problemsolver
P.S.: Ach was ich immer mal loswerden wollte: Gruß und Dank an Biber *nice-work-here* Hast mir schon oft unbekannterweise geholfen. Vielleicht kann ich diesmal auch mal anderen helfen
Tutorial zur Remoteinstallation von VNC
In diesem Tutorial wird beschrieben, wie es möglich ist, VNC oder dessen Derivate remote von einem Adminrechner auf mehreren Rechnern zu installieren/verteilen.
In meinem Szenario geht es darum, auf einem oder mehreren (besser natürlich allen) Domänenrechnern VNC zu installieren, den VNC Dienst einzurichten, Einstellungen automatisch vorzugeben und den Dienst letztendlich zu starten, inkl. einer möglichen Fehlerkontrolle bei der Installation.
Das Script ist in meiner Umgebung schon häufig fehlerfrei getestet worden, Fehlerfreiheit kann ich nicht garantieren, aber freue mich jetzt schon über Kritik
Um es mit anderen Worten zu sagen: Faulheit ist der Motor der IT-Adminstration *fg* und ich bin sehr faul... manchmal Es spart zumindest viel Zeit...
Also kommen wir erstmal zu unserem Rezept:
1.) Ein bissle VNC (In diesem Fall TightVNC, die winvnc.exe und die VNCHooks.dll)
2.) Eine Prise Registry-Kenntnisse (Wichtig: Wenn du keine Ahnung hast, was das ist, bitte NICHT weiterlesen)
3.) PsExec aus dem PsTools Paket von Sysinternals (jetzt mittlerweile Microsoft) zum verfeinern
4.) Batch Scripting Kochkenntnisse
5.) Administratorrechte auf dem Zielrechner oder den Zielrechnern (klar, oder?)
6.) Eine Netzwerkfreigabe, auf den alle Benutzer Lesezugriff haben. (z.b: \\fileserver\vncinst oder \\server\netlogon\vncinst oder oder oder - seid kreativ)
7.) Alles das was ich sonst noch vergessen haben könnte *lol* Salz, Pfeffer, Ehrgeiz die Batchdateien zu verstehn
Hier die Links:
(1) TightVNC Installer
(2) TightVNC: Nur die Dateien - ohne Installer
(3) PsExec und die PsTools
Zuerst laden wir uns alle benötigten Datein herunter. (1), (2) und (3)
Danach installieren wir VNC (1) auf einem jungfräulichen Rechner mit allen vorgegebenen Optionen, ausser der Dienstoption.
Diese wählen wir aus, so dass der Dienst eingerichetet wird und automatisch startet.
Beim ersten Start von dem VNC Dienst wird angemeckert, dass noch kein Passwort vergeben worden ist.
Hier geben wir das Passwort ein, was zukünftig bei allen Rechnern als Standardpasswort vergeben werden soll!
Aus (2) holen wir uns nun die Dateien Winvnc.exe und VNCHooks.dll raus und kopieren die Netzwerkfreigabe (siehe Rezept )
Jetzt holen wir uns die in VNC eingestellten Werte aus der Registrierung.
Ein manueller Export mit "regedit" ist zwar schön, aber das hier ist schöner
reg export HKCU\Software\ORL\WinVNC3 c:\teil1.reg
reg export HKLM\SOFTWARE\ORL\WinVNC3 c:\teil2.reg
Diese beiden Dateien fügen wir zu einer Reg-Datei mit Namen TightVNC.reg zusammen. (Hinterher am besten einmal mit einem Doppelklick auf die Datei testen, ob der Import funktioniert.)
Diese Datei legen wir dann ebenfalls auf Netzwerkfreigabe!
Vergesst nicht die PsExec.exe (3) ebenfalls auf die Netzwerkfreigabe zu kopieren. Hierbei vergesst bitte nicht die pdh.dll Datei, da diese Datei ebenfalls zum Ausführen von PsExec notwendig ist.
Jetzt kommen wir zum Paste and Copy Teil:
Erstellt 2 Batchdateien "_serviceinstall_neu.bat" und "_vnc_remote_installation_neu.bat"
Die serviceinstall.bat ist hinterher dafür zuständig auf dem Client alle nötigen Einstellungen und die Installation unter %windir%\vnc vorzunehmen. Die andere Batch ist das Script was auf dem Administratorrechner ausgeführt werden muss
Nach dem Erstellen der Batchdatei, passt folgende Variablen nach euren Begebenheiten an:
vncregremote, vncexeremote, vnchooksremote, user, pass, pathtopsexec, pathtoserviceinstall
Info: Nach einer erfolgreichen Installation befindet sich auf dem Zielrechner eine vncinstall.log unter %windir%\vnc
Hier die beiden Dateien:
"_serviceinstall_neu.bat"
@echo off
:start
@rem auf die folgenden beiden Dateien muss Lesezugriff bestehen
@rem Diese Datei muss von einem Benutzer ausgeführt werden,
@rem der am Zielrechner Administratorprivilegien besitzt. (z.B. Schreibzugriff %windir%)
@rem Loglevel 1 = Öffnen der Logdatei im nachhinein. Alles andere, wird ignoriert
set loglevel=0
set vncregremote="\\Fileserver\edv$\Managementtools\tightvnc_installation\tightvnc.reg"
set vncexeremote="\\Fileserver\edv$\Managementtools\tightvnc_installation\winvnc.exe"
set vnchooksremote="\\Fileserver\edv$\Managementtools\tightvnc_installation\VNCHooks.dll"
@rem Ab hier nichts mehr ändern...
set zielordner=%windir%\vnc
if not exist "%zielordner%" mkdir "%zielordner%"
@rem wenn der Ordner nicht erstellt werden konnte - Installation abbrechen!
if not exist "%zielordner%" goto ende
set logfile="%zielordner%\vncinstall.log"
set vncexe="%zielordner%\winvnc.exe"
set vncreg="%zielordner%\tightvnc.reg"
set vnchooks="%zielordner%\VNCHooks.dll"
if exist %vncregremote% copy /Y %vncregremote% %vncreg%
if exist %vncexeremote% copy /Y %vncexeremote% %vncexe%
if exist %vnchooksremote% copy /Y %vnchooksremote% %vnchooks%
if not exist %vncexe% goto ende
if not exist %vncreg% goto ende
if not exist %vnchooks% goto ende
echo ====================================================>%logfile%
echo Rechner : %computername% >>%logfile%
echo Benutzer : %userdomain%\%username% >>%logfile%
echo Datum/Uhrzeit : %date%/%time% >>%logfile%
echo Zielordner : %zielordner% >>%logfile%
echo Remote winvnc.exe : %vncexeremote% >>%logfile%
echo Remote Reg-Datei : %vncregremote% >>%logfile%
echo Remote Hooks-Datei : %vnchooksremote% >>%logfile%
echo Lokale winvnc.exe : %vncexe% >>%logfile%
echo Lokale Reg-Datei : %vncreg% >>%logfile%
echo Lokale Hooks-Datei : %vnchooks% >>%logfile%
echo Loglevel : %loglevel% >>%logfile%
echo ==================================================== >>%logfile%
echo. >>%logfile%
echo Starten der VNC-Installation am %date% um %time% auf %computername%...>>%logfile%
echo.>>%logfile%
reg query HKLM\SYSTEM\CurrentControlset\Services\winvnc /v ImagePath > NUL: 2>&1
@rem Errorlevel = 0 dann ist der Wert in der Registrierung vorhanden. -> Dienst stoppen, Dienst deinstallieren, Werte importieren, Dienst installieren starten + ServiceHelper
@rem Errorlevel = 1 dann ist der Wert in der Registrierung NICHT vorhanden. --> Werte importieren, Dienst installieren starten + ServiceHelper
IF %errorlevel% EQU 1 (
echo ----------------------------->>%logfile%
echo VNC-Installation NICHT vorhanden!!!>>%logfile%
echo ----------------------------->>%logfile%
goto vnconlyinstall
) ELSE (
echo ----------------------------->>%logfile%
echo VNC-Installation vorhanden!!!>>%logfile%
echo ----------------------------->>%logfile%
)
echo ----------------------------->>%logfile%
echo Stoppen des VNC Servers...>>%logfile%
net stop "VNC Server">>%logfile%
echo Stoppen des VNC Servers...FERTIG!!!>>%logfile%
echo.>>%logfile%
echo ----------------------------->>%logfile%
echo Deinstallieren des VNC Serverdienstes...>>%logfile%
%vncexe% -remove>>%logfile%
echo Deinstallieren des VNC Serverdienstes...FERTIG!!!>>%logfile%
echo.>>%logfile%
echo ----------------------------->>%logfile%
:vnconlyinstall
echo Einfügen der Registryeinstellungen für den Dienst inkl. Passwort...>>%logfile%
regedit /s %vncreg%>>%logfile%
echo Einfügen der Registryeinstellungen für den Dienst inkl. Passwort...FERTIG!!!>>%logfile%
echo.>>%logfile%
echo ----------------------------->>%logfile%
echo Installieren des Dienstes...>>%logfile%
%vncexe% -install>>%logfile%
echo Installieren des Dienstes...FERTIG!!!>>%logfile%
echo.>>%logfile%
echo ----------------------------->>%logfile%
echo Starten des VNC Servers...>>%logfile%
net start "VNC Server">>%logfile%
if "%loglevel%"=="1" echo if exist "%zielordner%\winvnc.exe" "%zielordner%\winvnc.exe" -servicehelper>"%ALLUSERSPROFILE%\Desktop\VNCTrayIcon.bat"
if "%loglevel%"=="1" echo del /Q "%ALLUSERSPROFILE%\Desktop\VNCTrayIcon.bat">>"%ALLUSERSPROFILE%\Desktop\VNCTrayIcon.bat"
echo Starten des VNC Servers...FERTIG>>%logfile%
echo.>>%logfile%
echo ----------------------------->>%logfile%
echo VNC-Installation am %date% um %time% auf %computername% beendet!!!>>%logfile%
if "%loglevel%"=="1" start %logfile%
:ende
if exist "%zielordner%\*.reg" del /Q "%zielordner%\*.reg"
if exist "%zielordner%\*.bat" del /Q "%zielordner%\*.bat"
Und hier die Andere...
"_vnc_remote_installation_neu.bat"
@echo off
:start
@rem Um alle Rechner in der Domäne mit VNC auszurüsten, übergebe "\\*"
@rem Zur Erläuterung hierfür schau dir den Syntax von PsExec an.
if '%1'=='' goto ende
@rem Erklärung für -merke- siehe unten...
set merke=1
echo ======================
echo Rechner : %1
echo ======================
echo.
@set user="DOMAENE\installateur"
@set pass="DaS-pAsSwOrT"
@set pathtopsexec="\\Fileserver\edv$\Managementtools\PsTools\psexec.exe"
@set pathtoserviceinstall="\\fileserver\edv$\Managementtools\tightvnc_installation\_serviceinstall_neu.bat"
@rem Ab hier nichts mehr editieren!!!
if not exist %pathtopsexec% echo PSEXEC.EXE (Sysinternals) fehlt. (Momentane Konfig.: %pathtopsexec%) && goto ende3
if not exist %pathtoserviceinstall% echo Serviceinstallations-Batch fehlt! (Momentane Konfig.: %pathtoserviceinstall%) &&
goto ende3
%pathtopsexec% %1 -c -u %user% -p %pass% %pathtoserviceinstall%
echo Errorlevel nachher: %errorlevel%
shift
goto start
:ende
@Rem Folgende Zeile ist dafür gedacht, dass wenn die Batch ohne Parameter aufgerufen worden ist,
@rem die Optionen der Batch angezeigt werden. = Ende2
if "%merke%"=="" goto ende2
goto ende3
:ende2
cls
echo.
echo VNC Installationsbatch (c) 2007 Problemsolver
echo https://administrator.de - Hier werden Sie geholfen *g*
echo.
echo Syntax:
echo %~nx0 ^<^<Remoterechner1^>^> ^<^<Remoterechner2^>^> ...
echo.
echo Beispiel:
echo %~nx0 \\versand1 \\verkauf23 \\server12
echo.
echo.
pause
:ende3
@rem Variablen aus den Umgebungsvariablen löschen. Sicher ist sicher. :-)
@set user=
@set pass=
set zielordner=
set batchdatei=
set loglevel=
set logfile=
set zielordner=
set pathtopsexec=
set pathtoserviceinstall=
Um zahlreiche Anteilnahme und Diskussion über diese Scripte wird natürlich gebeten.
Ggf. werden die Scripte daraufhin überarbeitet, verbessert und wieder hier eingestellt
Hinweis: Bitte denkt daran, dass VNC nicht perfekt in Punkto Sicherheit ist. (insbesondere bei dem eingestellten Passwort)
Die Kenner wissen hier, was ich meine.
Lieben Gruß
Markus@Problemsolver
P.S.: Ach was ich immer mal loswerden wollte: Gruß und Dank an Biber *nice-work-here* Hast mir schon oft unbekannterweise geholfen. Vielleicht kann ich diesmal auch mal anderen helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 54013
Url: https://administrator.de/contentid/54013
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
10 Kommentare
Neuester Kommentar
Moin problemsolver,
schönes Tutorial, danke dafür
Kleine Fussnote noch:
Wenn Du den Batch mit der Zeile "@echo off & setlocal" beginnen würdest, dann brauchst Du den ganzen ":ende3"-Block nicht.
Dann gelten die mit SET gesetzten Variablen wirklich nur in diesem Batch.
Und es hat den weiteren Vorteil, dass Du Dir nicht aus Versehen vorhandene Variablen "umschiessen" kannst.
Ist zwar unwahrscheinlich, aber solche Variablennamen wie %user% und %pass% beispielsweise...who knows.
Ansonsten keinerlei Einwände, ganz im Gegenteil.
Grüsse
Biber
schönes Tutorial, danke dafür
Kleine Fussnote noch:
Wenn Du den Batch mit der Zeile "@echo off & setlocal" beginnen würdest, dann brauchst Du den ganzen ":ende3"-Block nicht.
Dann gelten die mit SET gesetzten Variablen wirklich nur in diesem Batch.
Und es hat den weiteren Vorteil, dass Du Dir nicht aus Versehen vorhandene Variablen "umschiessen" kannst.
Ist zwar unwahrscheinlich, aber solche Variablennamen wie %user% und %pass% beispielsweise...who knows.
Ansonsten keinerlei Einwände, ganz im Gegenteil.
Grüsse
Biber
Hallo problemsolver,
funktioniert alles sehr schön! Nur das ich mich erst connecten kann wenn der client einen restart gemacht hat find ich so schade... is eigentlich klar oder bin ich dafür zu beschränkt?!
Aber super gemacht. Das script ist gut durchdacht, aber für meine zwecke hätte ich es mit den Variablen gerne einfacher. evtl. ne config.file das ich nicht immer die batch editieren muss. bei häufigerer anwendung in mehrern Netzen wär sowas von vorteil.. Vielleicht schreib ich am WE mal bisserl was...
grüße,
funktioniert alles sehr schön! Nur das ich mich erst connecten kann wenn der client einen restart gemacht hat find ich so schade... is eigentlich klar oder bin ich dafür zu beschränkt?!
Aber super gemacht. Das script ist gut durchdacht, aber für meine zwecke hätte ich es mit den Variablen gerne einfacher. evtl. ne config.file das ich nicht immer die batch editieren muss. bei häufigerer anwendung in mehrern Netzen wär sowas von vorteil.. Vielleicht schreib ich am WE mal bisserl was...
grüße,