Autostart aplikacji (C#)

Ostatnio potrzebowałem dodać funkcję autostartu do jednej z aplikacji, nad którą aktualnie pracuję. Cały proces jest bardzo prosty – wystarczy tylko dodać wpis do odpowiedniego rejestru windows i gotowe 🙂
W tym celu napisałem prostą, statyczną klasę pomocniczą, umożliwiającą zarządzanie programami dodanymi do autostartu. Nie będę się tutaj zbytnio rozpisywał, myślę, że kod jest wystarczająco czytelny.

/// <summary>
/// Klasa pomocnicza do zarządzania autostartem aplikacji
/// </summary>
public static class AutostartHelper {

    #region Constants
    private const string AutoRunRegistryKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
    #endregion

    #region Public methods
    /// <summary>
    /// Zwraca listę aplikacji dodanych do autostartu jako pary wartości: NazwaAplikacji => ŚcieżkaDoPliku
    /// </summary>
    public static Dictionary<string, string> GetAutostartApps() {

        var result = new Dictionary<string, string>();

        RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(AutoRunRegistryKey, false);

        foreach (var appName in registryKey.GetValueNames()) {
           result.Add(appName, registryKey.GetValue(appName).ToString());
        }

        registryKey.Close();

        return result;
    }

    /// <summary>
    /// Dodaje wskazaną aplikację o podanym pliku .exe do autostartu
    /// </summary>
    public static void AddToStartup(string appName, string executablePath) {

        if (string.IsNullOrWhiteSpace(appName)) {
            throw new ArgumentNullException("Nazwa aplikacji nie może być pusta");
        }

        if (string.IsNullOrWhiteSpace(executablePath)) {
            throw new ArgumentNullException("Ścieżka do pliku nie może być pusta");
        }

        if (!File.Exists(executablePath)) {
            throw new FileNotFoundException("Podany plik nie istnieje", executablePath);
        }

        RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(AutoRunRegistryKey, true);
        registryKey.SetValue(appName, executablePath);
        registryKey.Close();
    }

    /// <summary>
    /// Usuwa wskazaną aplikację z autostartu
    /// </summary>
    public static void RemoveFromStartup(string appName) {

        if (string.IsNullOrWhiteSpace(appName)) {
            throw new ArgumentNullException("Nazwa aplikacji nie może być pusta");
        }

        RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(AutoRunRegistryKey, true);
        registryKey.DeleteValue(appName, false);
        registryKey.Close();
    }

    /// <summary>
    /// Zwraca informację czy aplikacja o podanej nazwie jest dodana do autostartu
    /// </summary>
    public static bool IsStartup(string appName) {

        if (string.IsNullOrWhiteSpace(appName)) {
            throw new ArgumentNullException("Nazwa aplikacji nie może być pusta");
        }

        RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(AutoRunRegistryKey, false);
        var value = registryKey.GetValue(appName);
        registryKey.Close();

        return (value != null);
    }
    #endregion
}

I to by było na tyle. Mam nadzieję, że komuś się przyda te parę linijek 🙂


Tagi:, , ,

Nie ma jeszcze komentarzy.

Dodaj komentarz

Uzupełnij * Time limit is exhausted. Please reload the CAPTCHA.