We are implementing UVNC with our KACE K1000 VM appliance, and it was decided that the "EYE" icon was a bit "Big Brother-ish" looking.

The method I used to resolve this issue may not be the most efficient, but it works for us rather well.

First, I started with two UVNC scripts built by the script wizard. One contained the viewer (for techs), and the other with only the server components (for users). I also used the MS Logon required and pulled in a VNC Access AD Security group in the ACL.txt file (see documentation on how to use this). Now we can control who has access to VNC remote via AD group.

With the above configuration, it is a simple process to deploy the UVNC setup to your users and techs using labels. We also chose to allow remoting in via prompt, with a default of 30 seconds which allows us in if no response. This gives ample time for notification, while not hindering us from taking over in the event someone is out.

Here is the problem, though. The WINVNC.EXE file that is installed contains the "EYE" icon files embedded in the exe itself. You only get access to that file once it is installed. So, I installed it on my machine, and used a resource editor on the EXE file (XN Resource Editor is a good one). I found the old VNC logo icons doing a google image search, and replaced the green background "EYE" icons using paint and copying and pasting.

Now that I have a WINVNC.EXE file (which I added as a dependency to the script) with the icon I liked (I left the yellow background EYE so they know they are being remoted), I added steps in the script at the end to stop the VNC service, copy the exe in the program files folder, and then restart the service.


At least with this particular script, when you use the built in "Stop a service" task, the service didn't always stop in time for the next copy task. Also, there seemed to be two WINVNC.EXE processes lingering sometimes after that task. Doing a "Kill a process" yielded similar problems fully stopping the process before the copy.

My solution to this was to use a "NET STOP UVNC_SERVICE", followed by a batch file run that used TASKLIST and TASKKILL commands to kill the WINVNC.EXE process in case the service stop didn't completely work. (This bat file is run twice)

Now, we copy and use the normal Start a service task. Problem solved.

I have more info if anyone is interested.
0 Comments   [ - ] Hide Comments


Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
Answer this question or Comment on this question for clarity


I also wanted to add (crucial for proper deployment) that I changed the order of tasks from the default UVNC script.

When you create the script, it puts all the steps to install UVNC in the "On Success" portion. In reality, you want the script to check for UVNC first, then if it fails, install it.

By default, I think it would just re-install UVNC each time.

There is no easy way to do this, so set aside about 30 minutes or so to re-order the steps.

First, in the Verify portion, I check for the presence of "C:\Program Files\UltraVNC\winvnc.exe"

On success, I have it log "VNC is installed" for "Status"

Then, I manually moved each step left in "On Success" to "Remediation". This can take some time, and you'll have to open a couple of windows, so that you can drill into the properties of each step to duplicate it.

Since I have two scripts (one for techs, and one for users) I had to do this twice.

Here are my remediation steps:
Log “VNC is being installed” to “status”.Edit
Set “HKLM\SOFTWARE\ORL\WinVNC3!MSLogonRequired” to “1”.Edit
Set “HKLM\SOFTWARE\ORL\WinVNC3!NewMSLogon” to “1”.Edit
Set “HKLM\SOFTWARE\ORL\WinVNC3!DisableTrayIcon” to “0”.Edit
Set “HKLM\SOFTWARE\ORL\WinVNC3\Default!AllowEditClients” to “1”.Edit
Set “HKLM\SOFTWARE\ORL\WinVNC3\Default!AllowProperties” to “1”.Edit
Set “HKLM\SOFTWARE\ORL\WinVNC3\Default!AllowShutdown” to “1”.Edit
Launch “SYS\cmd.exe” with params “/C ”mkdir “C:\Program Files\UltraVNC”“”.Edit
Launch “SYS\cmd.exe” with params “/C ”copy “$(KACE_DEPENDENCY_DIR)\ultravnc.ini” “C:\Program Files\UltraVNC\ultravnc.ini” /Y“”.Edit
Launch “SYS\cmd.exe” with params “/C ”copy “$(KACE_DEPENDENCY_DIR)\rc4.key” “C:\Program Files\UltraVNC\rc4.key” /Y“”.Edit
Launch “SYS\cmd.exe” with params “/C ”copy “$(KACE_DEPENDENCY_DIR)\acl.txt” “C:\Program Files\UltraVNC\acl.txt” /Y“”.Edit
Launch “$(KACE_DEPENDENCY_DIR)\UltraVNC_1.0.5.6_Setup.exe” with params “/loadinf=”$(KACE_DEPENDENCY_DIR)\ultravnc.inf“ /norestart /verysilent”.Edit
Launch “C:\Program Files\UltraVNC\MSLogonACL.exe” with params “/i /o ”C:\Program Files\UltraVNC\acl.txt“”.Edit
Launch “SYS\cmd.exe” with params “/C ”net stop uvnc_service“”.Edit
Launch “$(KACE_DEPENDENCY_DIR)\KILLVNC.BAT” with params “”.Edit
Launch “$(KACE_DEPENDENCY_DIR)\KILLVNC.BAT” with params “”.Edit
Launch “SYS\cmd.exe” with params “/C ”copy “$(KACE_DEPENDENCY_DIR)\winvnc.exe” “C:\Program Files\UltraVNC\winvnc.exe” /Y“”.Edit
Start service “uvnc_service”.Edit


Here is my killvnc.bat file:
For /F "tokens=2" %%n in ('tasklist ^| Find "winvnc.exe"') Do Set Task=%%n
TaskKill /F /PID %task%
Set Task=

I also added a copy of winvnc.exe to the dependencies list. This file was modified with XN resource editor, and I replaced the icons with the VNC logo from a google image search.

Further, I have some other logging entries in the remediation success/failure steps so that it tells me if it was successful or not.
Answered 07/15/2011 by: jabelltulsa
Senior Yellow Belt

Please log in to comment
Just an update:

This method is working perfectly. I have had no issues deploying this script. I have even deployed this script to remote sites over a slow WAN link, and no one had any issues.

Further, I built OU Smart Labels (ldap) so that I could target this deployment for AD OU's.
Answered 07/27/2011 by: jabelltulsa
Senior Yellow Belt

Please log in to comment