Deployment Solution

 View Only

WinPE 2.1 Remote Control with UltraVNC 

Jun 23, 2008 11:15 AM

Since I wrote how to enable AClient remote control in WinPE 1.6, I have had a lot of people ask me if it is possible to remote control in WinPE 2.1. I have just figured out that it is possible! While it is not as easy as enabling AClient remote control, it is not too difficult and it is worth the effort to be able to right-click any computer that is running a job in automation so that you can view the progress and troubleshoot any problems that may arise. If you notice that a computer has been stuck in automation for a long time, you can simply remote control the computer to fix the problem.

To enable Remote Control in WinPE 2.1, you will need to...

  1. Upgrade to Deployment Server 6.9
  2. Add WinPE 2.1 Pre-boot OS files to Boot Disk Creator
  3. Install UltraVNC Server to a reference computer
  4. Configure UltraVNC on the reference computer
  5. Export the UltraVNC settings from the reference computer
  6. Copy the UltraVNC files off of the reference computer
  7. Add UltraVNC to your boot configuration
  8. Add UltraVNC Viewer to the Deployment Server Console

Upgrade to Deployment Server 6.9

Deployment Server 6.9 adds a new RemoteControlTools.ini file that will allow you to add any remote control tool to the right-click menu of your computers in the Deployment Server Console. It also adds support for WinPE 2.1. You can download Deployment Server 6.9 at http://www.altiris.com/Download.aspx

Add WinPE 2.1 Pre-boot OS files to Boot Disk Creator

To add the WinPE 2.1 Pre-boot OS files to Boot Disk Creator, download "WinPE Automation Environments for Deployment Solution 6.9 for 32-bit (x86)" from the same place you downloaded Deployment Server 6.9 and run it on your Deployment Server.

Install UltraVNC Server to a Reference Computer

First, you will need to download the latest UltraVNC Setup (UltraVNC-xxxx-Setup.exe) from http://www.uvnc.com/download/index.html

Run UltraVNC-xxxx-Setup.exe on any computer, this will be our reference computer.

When prompted so select components, choose UltraVNC Server and nothing else. If you want to enable encryption, you can also install the DSM Encryption Plugin.

When prompted to select additional tasks, choose "Clean old VNC registry keys" and nothing else.

Configure UltraVNC on the Reference Computer

When the install is complete, launch "Start > Programs > UltraVNC > UltraVNC Server" If you receive a warning that no password has been set yet, press OK. You will be presented with the configuration dialog.

Enter your VNC Password, disable "Require MS Logon", disable "New MS Logon", enable "Disable TrayIcon", enable "Forbid the user to close down WinVNC", and press OK. The reason you must disable "Require MS Logon" and "New MS Logon" is because for some reason WinPE 2.1 couldn't authenticate when I had these enabled. So, we will use the password for authentication.

Export the UltraVNC Settings from the Reference Computer

Next, open regedit and export the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3" as UltraVNC.reg.

Your UltraVNC.reg file should look like this:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ORL]

[HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3]
"DebugMode" = dword: 00000000
"DebugLevel" = dword: 00000000
"AllowLoopback" = dword: 00000000
"LoopbackOnly" = dword: 00000000
"DisableTrayIcon" = dword: 00000000
"MSLogonRequired" = dword: 00000000
"NewMSLogon" = dword: 00000000
"UseDSMPlugin" = dword: 00000000
"ConnectPriority" = dword: 00000000
"DSMPlugin" = hex:

[HKEY_LOCAL_MACHINE\SOFTWARE\ORL\WinVNC3\Default]
"FileTransferEnabled" = dword: 00000001
"FTUserImpersonation" = dword: 00000001
"BlankMonitorEnabled" = dword: 00000001
"CaptureAlphaBlending" = dword: 00000000
"BlackAlphaBlending" = dword: 00000000
"DefaultScale" = dword: 00000001
"UseDSMPlugin" = dword: 00000000
"SocketConnect" = dword: 00000001
"HTTPConnect" = dword: 00000001
"XDMCPConnect" = dword: 00000000
"AutoPortSelect" = dword: 00000001
"InputsEnabled" = dword: 00000001
"LocalInputsDisabled" = dword: 00000000
"IdleTimeout" = dword: 00000000
"QuerySetting" = dword: 00000002
"QueryTimeout" = dword: 0000000a
"QueryAccept" = dword: 00000000
"LockSetting" = dword: 00000000
"RemoveWallpaper" = dword: 00000001
"Password"=hex: 3a,c5,fd,c2,ba,de,af,16
"AllowShutdown" = dword: 00000001
"AllowProperties" = dword: 00000001
"AllowEditClients" = dword: 00000001
"DSMPlugin" = hex:

Copy the UltraVNC Files Off of the Reference Computer

From the reference computer, copy VNCHooks.dll, and WinVNC.exe from C:\Program Files\UltraVNC to a location on your Deployment Server. Also, copy the UltraVNC.reg file into the same location.

Add UltraVNC to Your Boot Configuration

Edit an existing WinPE 2.1 configuration or create a new one.

When you are presented with the file explorer view of the boot configuration, create a new folder named UltraVNC. Inside that folder, place the files UltraVNC.reg, VNCHooks.dll, and WinVNC.exe.

Create a new text file in the startup folder named UltraVNC.bat. For the contents of UltraVNC.bat, enter the following:

regedit -s X:\UltraVNC\UltraVNC.reg
start X:\UltraVNC\WinVNC.exe

Your boot configuration should now look like this:

Save UltraVNC.bat and rebuild your boot configuration.

Add UltraVNC Viewer to the Deployment Server Console

Go to your reference, open Windows Explorer and go to "C:\Program Files\UltraVNC" copy the files vncviewer.exe, zip32.dll, unzip32.dll to a directory in the eXpress share of your Deployment Server. I will be using the directory eXpress\UltraVNC.

Next, open RemoteControlTools.ini in Notepad. And add the following section:

[UltraVNC]
Display-Name=Ultra&VNC
RemoteToolEXEFilePath=UltraVNC\vncviewer.exe
CommandLine=%AGENTIPADDR%

At the CommandLine= option, you can also add any additional command line parameters that you want. For your convenience, here is a list of the command line parameters and what they do:

-help, -? or -h
Print a help message.
-listen [port]
Start the VNCviewer in listen mode. If port is specified, the viewer listens on that port.
-viewonly
Do not send local keyboard or mouse events to the remote computer.
-nostatus
Don't show the status window while connecting.
-nohotkeys
Do not enable hot keys (like CTRL+ALT+F9 for full screen mode etc.). Can be useful in case of conflict with other installed software hotkeys.
-notoolbar
Do not display the toolbar.
-autoscaling
Automatically scale the viewer window so that the remote screen fits at best your local screen size.
-fullscreen
Display viewer in full screen mode.
-noauto
Disable auto mode. Required for using the color options below or saving a custom configuration (otherwise the settings from quick options always override).
-8bit, -256colors, -64colors, -8colors, -8greycolors, -4greycolors, -2greycolors
Set the color depth. Fewer colors can significantly reduce the required bandwidth.

Note: Grey colors only work with 32 bits color screen resolution. 16 or 24 bits color resolutions just don't work with grey colors.

-shared
Share the server with other viewers, i.e. allow several viewers to connect simultaneously to the server.
-swapmouse
Swap left and right button of the mouse.
-nocursor
Do not display any local dot mouse cursor.
-dotcursor
Display the local dot mouse cursor.
-normalcursor
Display the normal local mouse cursor.
-emulate3
Emulate a 3-button mouse.
-noemulate3
Do not emulate a 3-button mouse.
-scale A/B
Scale the display by the factor A/B.
-disableclipboard
Do not transfer clipboard content.
-loglevel loglevel
Set the loglevel. This can range from 0 (minimal) to 10 (maximum logging).
-console
Open a console window for log output.
-logfile filename
Log to the file specified by filename.
-config filename
Read the configuration from filename.
-encoding encoding
Encoding is either raw, rre, corre, hextile, zlib, zlibhex, tight or ultra. Encodings are described here.
-compresslevel level
Use specified compression level (0..9) for "tight" and "zlib" encodings (Tight encoding specific). Level 1 uses minimum of CPU time and achieves weak compression ratios, while level 9 offers best compression but is slow in terms of CPU time consumption on the server side. Use high levels with very slow network connections, and low levels when working over high-speed LANs. It's not recommended to use compression level 0, reasonable choices start from the level 1.
-quality quality
Use the specified JPEG quality (0..9) for the "tight" encoding (Tight encoding specific). Quality level 0 denotes bad image quality but very impressive compression ratios, while level 9 offers very good image quality at lower compression ratios. Note that the "tight" encoder uses JPEG to encode only those screen areas that look suitable for lossy compression, so quality level 0 does not always mean unacceptable image quality.
-password password
Use the specified password for "classic" VNC authentication.
-serverscale scale
Scale the display on the server side by 1/scale. For instance scale = 2 means that the remote screen dimensions are reduced by 2 ("half screen size"), reducing at the same time the amount of graphical data received by a factor 4 (2^2).
-quickoption option
Select a quickoption. Modem option is default.
1: Auto
2: LAN
3: Medium
4: Modem
5: Slow
7: Ultra
-dsmplugin filename
Use the DSM plugin specified by filename.
-proxy host[:port]
Use the repeater specified by host and optionally port.

Now you can remote control any computer that is in WinPE 2.1 Automation. Open your Deployment Server Console. Right-click any computer that is in WinPE 2.1 Automation and choose Remote Control>UltraVNC.

Statistics
0 Favorited
2 Views
1 Files
0 Shares
0 Downloads
Attachment(s)
doc file
WinPE 21 Remote Control.doc   127 KB   1 version
Uploaded - Feb 25, 2020

Tags and Keywords

Comments

Mar 17, 2012 12:13 AM

i have not experimented much with new computers (ones which were not already in the console) but wouldnt %agentipaddr% work here just as well?  in my usage of it, i can connect to machines about 95% of the time. once i had to call a user and have them read me the client ip addr off the agent status window, but thats it.

Mar 16, 2012 10:15 AM

if anyone ever comes across a fix for this it would be great, looks like %BWIPADDR% contains the correct IP but it cant be referenced in the RemoteControlTools.ini file

Aug 23, 2011 07:00 PM

Cheers CondorMan

Great article, easy to follow and works a treat.  I did notice that the latest version of UltraVNC uses a .ini file to store its settings but as long as you copy this into the same directory everything works great.

Nice job smiley

Apr 20, 2011 04:56 PM

I just tried this with DS 6.9 sp5 and UVNC 1.0.8.2

as mentioned above, ultravnc server no longer keeps its settings in the registry.  therefore, you need to put winvnc.exe, vnchooks.dll and ultravnc.ini into WinPE's additional files.  But before you do that, edit ultravnc.ini and change the following line from

path=C:\Program Files\UltraVNC

to

path=x:\UltraVNC

(assuming you created the UltraVNC folder in WinPE as directed above)

since the registry is no longer used, you don't need the regedit -s line anymore in the startup\ultravnc.bat file.

also, to make it easier in the console, change the following line in RemoteControlTools.ini from

CommandLine=%AGENTIPADDR%

to

CommandLine=%AGENTIPADDR% /password YourPassword

This will make it a simple one-click operation from the console, just like the original DS remote.  in my brief testing i noticed that sometimes the vnc connect dialog boxwill sometimes open up when you right click remote/ultravnc a machine, but it already has the right IP address in there, so you just have to click connect.

As a reminder to console users (weak-minded invididuals like myself), I added "(WinPE ONLY) to the Display-Name line in RemoteControlTools.ini as well. 

 

the only drawback i can see thus far is that the title bar of the vncviewer shows the remote machine as "minint-######## (ip.address)" rather than the name used in the console.  MAC address (shown on the agent window in WinPE, and on computer properties in the console) seems to be the only way to remotely confirm that you really do have the right machine under your control, since the toolbar in vncviewer doesn't always show the right IP address in the text box on the right (though the IP in the title bar IS correct).  to further simplify this, i added /notoolbar to the command line options in the remote ini file.  sure you lose the toolbar buttons, but how often do you actually use them while in WinPE?

Oct 14, 2010 01:20 PM

As WinPE 2.1 is Vista, the CCSAgent will not work as that OS is not supported.

CCS 6.2 added RDP and VNC to its RC tool options because of this.

Mar 03, 2009 03:29 PM

Do you know if this is possible with the Carbon Copy Agent?

We are using Carbon Copy for remote management of all other computers currently so it would be nice if we could use the same application for remote controlling computers while they are being imaged.

Dec 23, 2008 10:25 AM

I have this functionally working. Thanks!! But on a new computer that shows up in the console under New Computers with the SN as the name, WinPE is not reporting the IP address and is not registering the SN name in DNS. Has anyone figured a workaround to this?

Jun 28, 2008 12:40 AM

For this and my other article, I used UltraVNC version 1.0.2 because it is the latest "stable" release.

Jun 25, 2008 07:05 PM

I used version 1.0.4 and I believe it was made specifically to address Vista and the UAC. During that change they no longer stored information in the registry instead its in an INI file.
http://juice.altiris.com/forum/4698/how-remote-control-winpe-2x
In looking at your article I revised mine to include the version of UVNC I used.
Also I have no reason to have outgoing connections so I didn't include the viewer. I guess if you want incoming and outgoing you can include everything.
Regardless it looks like a well written article. Thanks, CondorMan.

Related Entries and Links

No Related Resource entered.