Background:
I created a single page web page that was set as the background using the Active Desktop function of Windows XP. This web page allowed you to search the employee database for phone numbers or extensions. It also had a section to calculate shipping for certain items my company sells.
Problem:
Active Desktop started messing up when laptop users would boot without a internet connection present. Also, since the web page was hosted on the company Intranet, a login dialog box would pop-up if IE was not configured properly which was confusing to some users.
Solution:
Rebuild the web page to not use Active Desktop, but still have the tools easily accessible. Having a bookmark to the web page was not considered "easily accessible".
Result:
I decided to created a small application that runs in the system tray. Right-clicking the icon in the tray would expand a menu of available tools. Fig. 1 shows the menu and the employee search box that appears after clicking "People Finder". Certain menu items are shown/hidden depending on the user’s login. For example, my login shows 6 items, but "Support Ticket" and "Cams" are not show for others. Rights are stored in the SQL database and not in the application so allowing access is simple and does not require an application update. Since we are on the subject of databases…how should the application connect to it? I decided to not connect directly to the database since the user would have to be on the network or have their VPN connected, but instead indirectly by using web services. Using web services allowed the application to work as long as any Internet connection was present. If a connection was not present, the application hides menu items that require a connection or certain rights. I created a separate web site that hosted the web service application that basically would act as a proxy for my application.
Since I knew I would be updating the application as time went by, I wanted the application to be able to update itself. I accomplished this by using some of the "Click Once" features of Visual Studio. Instead of using the default settings, I handled the Click Once part programmatically so that I could force the update.
I added a "Sales Links" item that expands into a limitless list of links and sub-links. The links can be URLs, local folders, or anything that you can type into the Start>Run box! Users with permission can easily modify and add links. The application refreshes the links from the database every 30 minutes.
Lets talk security…
Since only a standard Internet connection is needed for the application to work, there were a couple of security concerns. The web service application was open to the public! That’s okay, lots of web service applications are open to the public…that’s kind of the point of them. I decided to use "keys" that had to be passed each time the application consumed a web service. In other words, a password (or key) is passed to the web service and every method (function) the web service has requires a password. What about updates? The application needs to look in a public place for updates. If its public then everyone could download the program. That’s okay too! I just had to put some security measures in place with the application is launched. Let’s just say that when the program starts it knows if it is suppose to be on that computer, if the check fails the application quits.




