With a little modification, I made it to be easily called by any project. What you need to do is just pass in the 'Key Name' and 'Assembly Location' parameters.
Here is the complete class:
using Microsoft.Win32;
///
/// Utility.
///
public class Util
{
private const string RUN_LOCATION = @"Software\Microsoft\Windows\CurrentVersion\Run";
///
/// Sets the autostart value for the assembly.
///
///
Registry Key Name
///
Assembly location (e.g. Assembly.GetExecutingAssembly().Location)
public static void SetAutoStart(string keyName, string assemblyLocation)
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(RUN_LOCATION);
key.SetValue(keyName, assemblyLocation);
}
///
/// Returns whether auto start is enabled.
///
///
Registry Key Name
///
Assembly location (e.g. Assembly.GetExecutingAssembly().Location)
public static bool IsAutoStartEnabled(string keyName, string assemblyLocation)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(RUN_LOCATION);
if (key == null)
return false;
string value = (string)key.GetValue(keyName);
if (value == null)
return false;
return (value == assemblyLocation);
}
///
/// Unsets the autostart value for the assembly.
///
///
Registry Key Name
public static void UnSetAutoStart(string keyName)
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(RUN_LOCATION);
key.DeleteValue(keyName);
}
}
string keyName = "MyProgramName";
string assemblyLocation = Assembly.GetExecutingAssembly().Location; // Or the EXE path.
// Set Auto-start.
Util.SetAutoStart(keyName, assemblyLocation);
// Unset Auto-start.
if (Util.IsAutoStartEnabled(keyName, assemblyLocation))
Util.UnSetAutoStart(keyName);
No comments:
Post a Comment