
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
1083
Chapter 20
CHAPTER 20
Toolbox
20.0 Introduction
Every programmer has a certain set of routines that he refers back to and uses over
and over again. These utility functions are usually bits of code that are not provided
by any particular language or framework. This chapter is a compilation of utility rou-
tines that we have gathered during our time with C# and the .NET Framework. The
type of things found in this chapter are:
• Determining the path for various locations in the operating system
• Interacting with services
• Inspecting the Global Assembly Cache
• Message queuing
It is a grab bag of code that can help to solve a specific need while you are working
on a larger set of functionality in your application.
20.1 Dealing with Operating System Shutdown,
Power Management, or User Session Changes
Problem
You want to be notified whenever the operating system or a user has initiated an
action that requires your application to shut down or be inactive (user logoff, remote
session disconnect, system shutdown, hibernate/restore, etc.). This notification will
allow you have your application respond gracefully to the changes.
Solution
Use the Microsoft.Win32.SystemEvents class to get notification of operating system,
user session change, and power management events. The
RegisterForSystemEvents ...