C# application auto start
-
giovedì 1 marzo 2007 14:19Hello,
I have an application which has a form and a check box in it, i will save the check box state in another file so that i know whether it is checked or not... the problem is this .. i want that when the check box is checked the application auto starts when windows starts and vice versa
how can i deal with this maybe by adding a registry key trough the program?
Thx
Tutte le risposte
-
giovedì 1 marzo 2007 14:52
I wrote a class that does that:
/// <summary>
/// Enables or disables the autostart (with the OS) of the application.
/// </summary>
public static class AutoStarter
{
private const string RUN_LOCATION = @"Software\Microsoft\Windows\CurrentVersion\Run";
private const string VALUE_NAME = "Chili Clipboard";/// <summary>
/// Set the autostart value for the assembly.
/// </summary>
public static void SetAutoStart()
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(RUN_LOCATION);
key.SetValue(VALUE_NAME, Assembly.GetExecutingAssembly().Location);
}/// <summary>
/// Returns whether auto start is enabled.
/// </summary>
public static bool IsAutoStartEnabled
{
get
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(RUN_LOCATION);
if (key == null)
return false;string value = (string)key.GetValue(VALUE_NAME);
if (value == null)
return false;
return (value == Assembly.GetExecutingAssembly().Location);
}
}/// <summary>
/// Unsets the autostart value for the assembly.
/// </summary>
public static void UnSetAutoStart()
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(RUN_LOCATION);
key.DeleteValue(VALUE_NAME);
}
}You need to replace the VALUE_NAME with the name of your application.
-
giovedì 1 marzo 2007 15:47Hello thx for your reply
How will the Operating system trough the registry start the application without having a path for the application?
I mean the value_name will contain the name of the application like .. Application1 for example
Do i need to specify any location?
thx -
giovedì 1 marzo 2007 16:03
If you look at the sample you will see that I'm having
Assembly.GetExecutingAssembly().Location
as value of the registry value that is written. That is the actual location of the assembly that has been started (the .exe path).
-
martedì 8 maggio 2007 12:14Hi,
I have a little problem with autostart. I have 2 programs, both are using registry keys to autostart at Windows startup. One of them always starts up, no problem with it. The other one's key almost every time is removed. I don't know whether my antivirus program (NOD32) considers it as some kind of threat but it simply disappears and I don't know its cause. I checked my code to avoid accidental remove of the key but I didn't find anything.
I use the same code as below in both program:
Code Snippetprivate void CheckRegistry()
{
RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (this.checkBoxStartup.Checked)
{
if (!checkRegSet(rkApp))
{
rkApp.SetValue("App", Application.ExecutablePath.ToString());
}
}
else
{
if (checkRegSet(rkApp))
{
rkApp.DeleteValue("App");
}
}
}
private bool checkRegSet(RegistryKey rk)
{
if (rk.GetValue("App") == null)
return false; //not set
else return true; //set
}

