A Windows 7 system administrator is expected to keep hundreds computers secure and stable and they must be able to install a new piece of software on any subset of computers at a moments notice in an manner that is not disruptive to the end user. In an erra when Microsoft, Firefox, java, Adobe Reader and Flash release patches in batches monthly and antivirus software patches daily, keeping systems up to date can be tough to do. Here at Carleton College, we have two types of computers: offices and labs. Each of them needs to be dealt with differently, but the need for an inexpensive software distribution/management system is definitely apparent; this year, Carleton spent a huge sum of money for an office only solution.
In a lab setting, the computers must be identical and lab users need to be able to install software (itunes, games, course software from cds, ...) as needed. When the user is done with their current session, the machine needs to reset to the default state; this means that the user profile is fully removed along with their browser history and any applications that they may have installed (including malware and viruses). Under Windows XP, Carleton uses a program called PC-RDIST to do this; PC-RDIST works by syncronizing the Windows XP file system and registry with a master image that is stored on a file server. One of the benefits of syncronizing the file system and the registry is that all updates to the master image are automatically pushed out to the rest of the lab machines. Unfortunately, PC-RDIST was last updated in 2003, and the company is now defunct, and there are no obvious replacements.
For office computers, a system that can keep an up todate inventory of what is installed on every computer and that can push new software and patches in a non-disruptive way is also needed. Such packages do exist, but they are very, very expensive.
In this project, you will implement a system that will synchronize Windows 7 lab systems, and if time permits, you will also work on a software distribution/patch management system for office systems. Future work would include porting the system to Mac OSX and Linux.
This project touches upon a number of computer science concepts:
There may be a need for a client server package, and that may be easier to write in Java or C/C++, and development may be done in Microsoft Visual Studio. I envision the main interface to be a web site with a mysql/postgress backend database, so some php experience is desirable. An interest in finding out how Microsoft Windows 7 really works is the only requirement.