#region Copyright (c) 2002-2003, James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole, Philip A. Craig /************************************************************************************ ' ' Copyright 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole ' Copyright 2000-2002 Philip A. Craig ' ' This software is provided 'as-is', without any express or implied warranty. In no ' event will the authors be held liable for any damages arising from the use of this ' software. ' ' Permission is granted to anyone to use this software for any purpose, including ' commercial applications, and to alter it and redistribute it freely, subject to the ' following restrictions: ' ' 1. The origin of this software must not be misrepresented; you must not claim that ' you wrote the original software. If you use this software in a product, an ' acknowledgment (see the following) in the product documentation is required. ' ' Portions Copyright 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole ' or Copyright 2000-2002 Philip A. Craig ' ' 2. Altered source versions must be plainly marked as such, and must not be ' misrepresented as being the original software. ' ' 3. This notice may not be removed or altered from any source distribution. ' '***********************************************************************************/ #endregion namespace NUnit.Util { using System; using System.IO; using System.Text; using System.Windows.Forms; using Microsoft.Win32; /// /// NUnitRegistry provides static properties for NUnit's /// CurrentUser and LocalMachine subkeys. /// public class NUnitRegistry { private static readonly string KEY = @"Software\Nascent Software\Nunit\"; private static bool testMode = false; private static string testKey = @"Software\Nascent Software\Nunit-Test"; /// /// Prevent construction of object /// private NUnitRegistry() { } public static bool TestMode { get { return testMode; } set { testMode = value; } } public static string TestKey { get { return testKey; } set { testKey = value; } } /// /// Registry subkey for the current user /// public static RegistryKey CurrentUser { get { // Todo: Code can go here to migrate the registry // if we change our location. // Try to open new key // if ( key doesn't exist ) // create it // open old key // if ( it was opened ) // copy entries to new key // return new key return Registry.CurrentUser.CreateSubKey( testMode ? testKey : KEY ); } } /// /// Registry subkey for the local machine /// public static RegistryKey LocalMachine { get { return Registry.LocalMachine.CreateSubKey( testMode ? testKey : KEY ); } } public static void ClearTestKeys() { ClearSubKey( Registry.CurrentUser, testKey ); ClearSubKey( Registry.LocalMachine, testKey ); } /// /// Static function that clears out the contents of a subkey /// /// Base key for the subkey /// Name of the subkey public static void ClearSubKey( RegistryKey baseKey, string subKey ) { using( RegistryKey key = baseKey.OpenSubKey( subKey, true ) ) { if ( key != null ) ClearKey( key ); } } /// /// Static function that clears out the contents of a key /// /// Key to be cleared public static void ClearKey( RegistryKey key ) { foreach( string name in key.GetValueNames() ) key.DeleteValue( name ); foreach( string name in key.GetSubKeyNames() ) key.DeleteSubKeyTree( name ); } } }