Fog Creek Software
Discussion Board




Remote Control

We have a product that has a feature to allow you to remotely view someone else's desktop (for quality control).  Currently we implement this in VB6 with an IE Web control that hosts the VNC Java viewer.  However, in order to use the "session recording" feature of the java viewer, we would have to sign the java applet because it needs access to the local file system. 

This is a pain because we'd have to get a certificate, or use the 'test' certificate authority (bad idea).

I'm wondering if anyone knows of another component that could replace the usage of VNC alltogether?

I've been reading about using the Netmeeting SDK (sounds like a lot of work) and I can't find anything else. 

Any ideas?

Wayne
Thursday, September 11, 2003

Getting a certificate is bad because...?

Philo

Philo
Thursday, September 11, 2003

Why does that control need access to the local file system of the remote computer? If you want to record a session, record it on your side. VNC still seems a good choice for that task.

Johnny Bravo
Thursday, September 11, 2003

Getting a certificate is bad (for me) because:

- thus far I've had to spend very little time and no money adding the remote viewing feature.  Don't certificates cost money and have to be renewed every so often?

- I don't want to because I don't feel I should have to.  My software doesn't have to work over the Internet and is not meant to be run in the browser, it just happens to use the browser.


Why does that control need access to the local file system of the remote computer?

You're right, the control doesn't need access to the remote computer's file system.  The control needs access to the file system of the computer that the control is running on (the client in this case).


Well, I've defeated the certificate issue anyway.  I've found that I can do a quick registry hack that goes something like this:  put the url of the vnc server in the 'Trusted Sites' zone, enable unsigned java applets to access the file system for that zone, when the application ends, undo it.

Using this method I was able to play with the recording features of the Java VNC Viewer.  Unfortunately it writes raw RFB files which need to be converted into another useable format (mpeg, wmv, etc.).  There is some code that I found to take RFB streams and convert them to SWF format (see Vnc2Swf project) but it is written for Linux.  We could convert it, but I would rather not.

There is also Camtasia Screen Recorder SDK but the license is not royalty free it's like $75 per distribution.  There is also the nicely named Screen2Video ocx for $80 but it won't let me only record a portion of the screen (the vnc viewer).

I'm still looking though, if you've got any suggestions let me know.

Wayne
Thursday, September 11, 2003

"Getting a certificate is bad because...?"

...then you would have to tell people that you have been certified.


Thursday, September 11, 2003

Don't buy a certificate.  Just generate yourself a certificate.  The first time you try to use it, you'll get a popup complaining that the certificate was generated by an untrusted source (i.e. you).  Click "View Certificate", then "Install Certificate" - it'll walk you through a couple of dialogs and the certificate will work until it expires.

Since you'll basically get the same thing when the cert expires (except without the ability to install it to get around the dialog), generate a cert that won't expire for a Really Long Time.

schmoe
Thursday, September 11, 2003

Wayne that's a really cool trick, you gotta show us how to got a IE Web Control to host VNC Java applet! Do a write up! Especially interesting is if you also go though the trouble of signing it as your own CA.

Li-fan Chen
Thursday, September 11, 2003

Well, the write up would be really short because it's extremely easy to do.  So I'll just put it in this post:

On test machine A install your favorite VNC variant and start it running.  Make sure it comes with the built-in web server and you know what port it runs on (default for Tight VNC is 5800).

On developer machine D open any programming environment that will let you host the MSIE web control on a window.  In the code, after the form has been initialized, tell the MSIE contrl to navigate to test machine A's address like this:

    WebControl.Navigate("http://MachineA:5800")

To make sure that this will work on your development machine without having to build a program first, you can just open any browser and type in "http://MachineA:5800".  You should see a page with a Java applet running.

If you don't see the Java applet or get a warning see this page for the correct registry entries for you (or your program) to modify:  http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q182/5/69.ASP&NoWebContent=1  (warning link might wrap).  You can also use Tools-->Internet Options-->Security dialog to modify these safely.

Using that page I was able to figure out how to add Machine A to the "Trusted Zone" and turn certain security features on at run-time using the Registry APIs.

Once the page is loaded and you see the Java viewer applet, view the source for the web page and see how the viewer is instantiated.  There is a list of all of it's parameters at this page: http://www.tightvnc.com/doc/java/README.txt

With this and a single document.write() statement (to re-write the <object> tag into the page the way you want) you can completely control the viewer.

Wayne
Friday, September 12, 2003

By the way, I'm skipping the recording feature in this release for now because it was a last minute request and it's not extremely important.  Therefore I don't need a certificate or any registry hacks to change the file-system permissions for un-signed applets.

Besides, I don't like the way the viewer acts when it's recording I might just capture the window myself in another thread.

Wayne
Friday, September 12, 2003

*  Recent Topics

*  Fog Creek Home