 | Creating Performance Counters Programmatically Performance counters allow numerical information about the current state of the operating system or an application to be recorded and monitored using standard tools. This article explains how to create custom performance counters using C# code. |
 | Executing WMI Queries Windows Management Instrumentation provides a number of services that allow gathering of information about the operating system, software and hardware of a machine. Using WQL, this information can be retrieved using familiar, text-based queries. |
 | Setting the System Time Some software applications include the requirement to change the system clock time. This can be achieved using C# by calling a Windows API function. This article describes how to declare and use the SetSystemTime function and related SYSTEMTIME structure. |
 | Setting Performance Counters Microsoft Windows provides a large number of performance counters that can be monitored with tools such as Performance Monitor. It is possible to add new counters and set their values to allow such tools to monitor custom .NET applications and services. |
 | Detecting Processes that are not Responding If you are developing software that monitors other programs or services, it can be useful to detect when a process has stopped responding to the user. This can easily be achieved using members of the .NET framework's Process class. |
 | Detecting User Inactivity Some software, such as backup utilities, can use a large proportion of processor time and other resources. Often the user is given the option to only run such processes when the computer is not in use. This requires the detection of user inactivity. |
 | Getting the System Up Time Sometimes it is necessary to know how much time has passed since Windows was started. This article demonstrates two ways to obtain this information using the .NET framework and describes the limitations of one of the commonly used methods. |
 | Reading Performance Counters Microsoft Windows provides a large number of categorised performance counters that can be used to monitor the utilisation of hardware, services, software applications and drivers. Usually viewed with Performance Monitor, they can also be read using C#. |
 | Getting the Current Application's Memory Usage When you are creating an application that can be memory-intensive, it may be useful to monitor the current memory usage. This allows you to modify the behaviour of the program as its RAM requirements increase and to predict out-of-memory exceptions. |
 | Get the Registered User and Organisation When Windows is installed, the user must register a name and, optionally, the name of an organisation. This information is retained by the operating system. When asking for similar details, it is useful to present this information as default values. |