I found this useful C# class in this MSDN forum that provides an easy way to enable and disable an application auto-run in Windows.
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:
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:
Sample Usage:using Microsoft.Win32; /// <summary> /// Utility. /// </summary> public class Util { private const string RUN_LOCATION = @"Software\Microsoft\Windows\CurrentVersion\Run"; /// <summary> /// Sets the autostart value for the assembly. /// </summary> /// <param name="keyName">Registry Key Name</param> /// <param name="assemblyLocation">Assembly location (e.g. Assembly.GetExecutingAssembly().Location)</param> public static void SetAutoStart(string keyName, string assemblyLocation) { RegistryKey key = Registry.CurrentUser.CreateSubKey(RUN_LOCATION); key.SetValue(keyName, assemblyLocation); } /// <summary> /// Returns whether auto start is enabled. /// </summary> /// <param name="keyName">Registry Key Name</param> /// <param name="assemblyLocation">Assembly location (e.g. Assembly.GetExecutingAssembly().Location)</param> 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); } /// <summary> /// Unsets the autostart value for the assembly. /// </summary> /// <param name="keyName">Registry Key Name</param> 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);
ไม่มีความคิดเห็น:
แสดงความคิดเห็น