LaysAndNetflix Ответов: 1

C# как заставить установленное приложение работать при запуске


Привет, я пытаюсь заставить свое приложение работать при запуске после того, как я оберну проект с помощью программы установки из visual studio.

Вот функция, ответственная за размещение раздела реестра и значения моего установленного приложения в Редакторе реестра

private void SetStartup()
{
    try
    {
        string keys =
        @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run";
        string value = "Automated";

        if (Registry.GetValue(keys, value, null) == null)
        {
            // if key doesn't exist
            using (RegistryKey key =
            Registry.CurrentUser.OpenSubKey
            ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
            {
                key.SetValue("Automated", Path.GetDirectoryName
                (Application.ExecutablePath));
                key.Dispose();
                key.Flush();
            }
        }
        else
        {
            //if key Exist
        }
    }
    catch(Exception ex)
    {
        Error_Logging(ex);
    }

}


Добавление раздела реестра и значения моего проекта в Редактор реестра успешно работает после того, как я установил свое приложение на диск D: и запускаю проект в первый раз и закрываю его, но когда я перезагружаю компьютер, проект, который должен быть запущен, не работает.

Что я уже пробовал:

При добавлении группы вывода проекта из программы установки я выбрал первичный вывод, отладочные символы и файлы содержимого только для того, чтобы убедиться, что мои dll, exe и другие файлы включены в мой установщик .

Я выключил брандмауэр и добавил папку, в которую установил свой проект, в исключение Защитника Windows.

1 Ответов

Рейтинг:
4

Dave Kreskowiak

Вы записали путь к каталогу, в котором находится ваше приложение, вместо полного пути к исполняемому файлу для запуска в раздел запуска реестра.

Извлеките этот код из вызова SetValue и фактически получите значение в переменную, чтобы вы могли видеть строку, которая там находится:

key.SetValue("Automated", Path.GetDirectoryName
                (Application.ExecutablePath)

становится:
string path = Application.ExecuteablePath;
key.SetValue("Automated", path);


LaysAndNetflix

Да, вы правы, я заметил, что один тоже. Я забыл обновить этот вопрос ранее. Я смог заставить его работать час назад. Мой подход похож на ваш. большое вам спасибо за то, что вы опубликовали свой ответ. В знак признательности я отмечу ваше решение как ответ и оценю его на 5 звезд. Спасибо еще раз.