大量部署UltraVNC

什麼是大量部署?

就是同時在很多台電腦安裝軟體。而且安裝過程要自動,不用使用者去按[下一步]這種按鈕,什麼都不要做就安裝完成。

其實也不是什麼都不要做,而是事先都規劃設計好了。

什麼是UltraVNC?

一種遠端控制的軟體,可以讓你連到遠端的電腦。

可參考官網的說明。

為什麼要大量部署?

因為不想一台一台的裝。

在較多電腦的企業中,通常會有AD存在。利用AD提供的GPO這種 (危險的)功能,設定電腦在啟動時執行程式,開機後自動安裝程式,即可達到大量部署的目的。

為什麼要用UltraVNC?

因為通常會用到這個功能,是為了協助使用者處理問題,(因為不想走使用者的電腦那邊),所以要連到使用者的電腦上,檢視狀況及解決問題。

Windows有內建的遠端桌面可以使用,但若以此連線,遠端電腦的螢幕會被登出,這樣就看不到使用者發生問題當下的畫面。

Windows也有內建遠端協助功能,不過要由使用者主動操作,而不是每個人都會操作的。

所以預先在電腦上安裝UltraVNC,一旦使用者的電腦發生問題,打個電話到MIS部門,告知使用者自己電腦的IP位址(已預先設定為桌布背景),這樣MIS部門就可以連線到使用者的電腦,進行問題檢測與故障排除了。

另外,為了要和AD整合,使用AD帳號驗證(MSLogon2),所以捨棄Real VNC Free Edition等版本的VNC軟體。

ps. UltraVNC是Free的Open Source軟體。

如何自動安裝UltraVNC?

一般是透過GPO的軟體部署功能來安裝軟體,但是你必需要有MSI檔才行,很多軟體(例如:UltraVNC)的安裝程式是不提供MSI檔的。當然,還是有網路大善人教你怎麼把它打包成MSI檔,但個人使用後覺得還是有一些不習慣的地方,所以最後決定還是使用原生的功能,利用Logon Script的方式來進行安裝。

想要知道如何將UltraVNC打包成MSI檔,及如何利用GPO進行大量佈署的人,可以參考http://www.waynezim.com/2009/05/how-to-deploy-vnc-using-group-policy/的說明。

1. 下載UltraVNC的最新版。

例如:UltraVNC_1.0.8.2_Setup.exe。

如果你的作業系統是64位元的,則下載64位元的版本,例如:UltraVNC_1.0.8.2_x64_Setup.exe

2. 建立安裝選項檔,ultravnc.inf。

執行UltraVNC_1.0.8.2_Setup.exe /saveinf=ultravnc.inf,此時會進行安裝,並將安裝過程的選項記錄在ultravnc.inf檔案中。

image

image

image

image

image

image

image

image

image

image

image

image

image

ultravnc.inf的內容會長得像是…

[Setup]Lang=en
Dir=C:\Program Files\UltraVNC
Group=UltraVNC
NoIcons=0
SetupType=server
Components=ultravnc_server
Tasks=

因為是安裝在一般使用者的電腦上的,所以並沒有選擇安裝ultravnc_viewer

3. 產生設定檔。執行%ProgramFiles%\UltraVNC\uvnc_settings.exe以產生ultravnc.ini。

image
因為是要做AD整合驗證(使用AD的帳號來登入遠端使用者電腦的VNC),所以要勾選Require MS Logon及New MS Logon。

image
因為要能夠操作使用者的電腦,所以要把Disable Viewers inputs,不然就只能看不能動使用者的畫面了。

ultravnc.ini的內容長得像是…

[admin]
UseRegistry=0
MSLogonRequired=1
NewMSLogon=1
DebugMode=0
Avilog=0
path=C:\Program Files\UltraVNC
kickrdp=0
service_commandline=
DebugLevel=8
DisableTrayIcon=0
LoopbackOnly=0
UseDSMPlugin=0
AllowLoopback=0
AuthRequired=1
ConnectPriority=0
DSMPlugin=
AuthHosts=
AllowShutdown=1
AllowProperties=1
AllowEditClients=1
FileTransferEnabled=1
FTUserImpersonation=1
BlankMonitorEnabled=1
BlankInputsOnly=0
DefaultScale=1
CaptureAlphaBlending=0
BlackAlphaBlending=0
SocketConnect=1
HTTPConnect=1
XDMCPConnect=1
AutoPortSelect=1
PortNumber=0
HTTPPortNumber=0
IdleTimeout=0
RemoveWallpaper=0
RemoveAero=0
QuerySetting=0
QueryTimeout=0
QueryAccept=0
QueryIfNoLogon=0
primary=1
secundary=0
InputsEnabled=1
LockSetting=0
LocalInputsDisabled=0
EnableJapInput=0
FileTransferTimeout=30
[ultravnc]
passwd=000000000000000000
passwd2=000000000000000000
[poll]
TurboMode=0
PollUnderCursor=0
PollForeground=0
PollFullScreen=0
OnlyPollConsole=0
OnlyPollOnEvent=0
EnableDriver=0
EnableHook=0
EnableVirtual=0
SingleWindow=0
SingleWindowName=

4. 建立批次檔 Install.UltraVNC.cmd

@ECHO OFF

	SET SourceDir=\\starworld.com.tw\FS\軟體下載區\UltraVNC\UltraVNC 1.0.8.2

	SET MailFrom=Install.UltraVNC@%COMPUTERNAME%.%USERDNSDOMAIN%
	SET MailTo=Helpdesk@starworld.com.tw

:_Install

	reg.exe QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ultravnc2_is1" >NUL 2>NUL
	IF NOT ERRORLEVEL 1 GOTO _End

	ECHO %date% %time% Begin Install

	if "%PROCESSOR_ARCHITECTURE%" == "x86" (
		ECHO %date% %time% Install %SourceDir%\UltraVNC_1.0.8.2_Setup.exe /silent /load="%SourceDir%\ultravnc.inf" /norestart
		"%SourceDir%\UltraVNC_1.0.8.2_Setup.exe" /silent /loadinf="%SourceDir%\ultravnc.inf" /norestart
	)

	if "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
		ECHO %date% %time% Install %SourceDir%\UltraVNC_1.0.8.2_x64_Setup.exe /silent /loadinf="%SourceDir%\ultravnc.inf" /norestart
		"%SourceDir%\UltraVNC_1.0.8.2_x64_Setup.exe" /silent /loadinf="%SourceDir%\ultravnc.inf" /norestart
	)

	ECHO %date% %time% COPY "%SourceDir%\ultravnc.ini" "%ProgramFiles%\UltraVNC\ultravnc.ini" /Y
	COPY "%SourceDir%\ultravnc.ini" "%ProgramFiles%\UltraVNC\ultravnc.ini" /Y

	ECHO %date% %time% reg.exe ADD HKLM\SOFTWARE\ORL\WinVNC3\
	reg.exe ADD HKLM\SOFTWARE\ORL\WinVNC3\

	ECHO allow	0x00000003	BUILTIN\Administrators	> "%ProgramFiles%\UltraVNC\acl.txt"
	ECHO allow	0x00000003	"..\UltraVNC Helpers"	>> "%ProgramFiles%\UltraVNC\acl.txt"
	ECHO %date% %time% %ProgramFils%\UltraVNC\MSLogonACL.exe /i /o "%ProgramFiles%\UltraVNC\acl.txt"
	"%ProgramFiles%\UltraVNC\MSLogonACL.exe" /i /o "%ProgramFiles%\UltraVNC\acl.txt"

	ECHO %date% %time% "%ProgramFiles%\UltraVNC\winvnc.exe" -install
	"%ProgramFiles%\UltraVNC\winvnc.exe" -install

	ping.exe 127.0.0.1 -n 5 >NUL

	ECHO %date% %time% End Install

:_End

	ECHO %date% %time% Check "%ProgramFiles%\UltraVNC\winvnc.exe" Is Exist Or Not ?
	IF NOT EXIST "%ProgramFiles%\UltraVNC\winvnc.exe" (
		ECHO %date% %time% No
		SET MailMessage=%date% %time% %ProgramFiles%\UltraVNC\winvnc.exe Is Not Exist ***
		GOTO _SendMail
	) ELSE (
		ECHO %date% %time% Yes
	)

	ECHO %date% %time% Check UltraVNC Is Install Or Not ?
	reg.exe QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Ultravnc2_is1" >NUL
	IF ERRORLEVEL 1 (
		ECHO %date% %time% No
		SET MailMessage=%date% %time% UltraVNC Is Not Install Or Install Fail ***
		GOTO _SendMail
	ELSE
		ECHO %date% %time% Yes
	)

	ECHO %date% %time% Check winvnc.exe Is Running Or Not ?
	tasklist.exe /NH /SVC /FI "ImageName eq winvnc.exe" | find.exe /I "winvnc.exe"
	IF ERRORLEVEL 1 (
		ECHO %date% %time% No
		SET MailMessage=%date% %time% winvnc.exe Is Not Running ***
		GOTO _SendMail
	) ELSE (
		ECHO %date% %time% Yes
	)

	ECHO %date% %time% Check winvnc.exe Is Running As Service uvnc_service Or Not ?
	tasklist.exe /NH /SVC /FI "ImageName eq winvnc.exe" /FI "Services eq uvnc_service" 2>NUL | find.exe /I "uvnc_service" >NUL
	IF ERRORLEVEL 1 (
		ECHO %date% %time% No
		SET MailMessage=%date% %time% winvnc.exe Is Not Running As Service uvnc_service ***
		GOTO _SendMail
	) ELSE (
		ECHO %date% %time% Yes
	)

	GOTO _TheEnd

:_SendMail

	SET ScriptFile=%TEMP%\%RANDOM%.vbs
	
	ECHO Set objEmail = CreateObject( "CDO.Message" )	>> "%ScriptFile%"
	ECHO With objEmail					>> "%ScriptFile%"
	ECHO 	.From     = "%MailFrom%"			>> "%ScriptFile%"
	ECHO 	.To       = "%MailTo%"			>> "%ScriptFile%"
	ECHO 	.Subject  = "%MailMessage%"			>> "%ScriptFile%"
	ECHO 	.TEXTbody = "%MailMessage%"			>> "%ScriptFile%"
	ECHO 	.Send					>> "%ScriptFile%"
	ECHO End With					>> "%ScriptFile%"
	
	"%ScriptFile%" //T:5
	DEL "%ScriptFile%"

	GOTO _TheEnd

:_TheEnd

5. 將Install.UltraVNC.cmd、ultravnc.inf、ultravnc.ini放到\\starworld.com.tw\FS\檔案下載區\UltraVNC\下,然後在GPO設定Logon Script,設定開機時執行\\starworld.com.tw\FS\檔案下載區\UltraVNC\Install.UltraVNC.cmd

[未完,待續…]

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s


%d 位部落客按了讚: