#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 );
}
}
}