Как запустить приложение C # при запуске Windows (обновление)? - PullRequest
0 голосов
/ 31 января 2019

Я хочу запустить приложение C # при запуске.Я использовал этот код, который нашел здесь :

private void SetStartup(bool enable)
    {
        string runKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";

        RegistryKey startupKey = Registry.CurrentUser.OpenSubKey(runKey);

        if (enable)
        {
            if (startupKey.GetValue("ZanNews") == null)
            {
                startupKey.Close();
                startupKey = Registry.CurrentUser.OpenSubKey(runKey, true);
                startupKey.SetValue("ZanNews", "\"" + Application.ExecutablePath + "\"");
                startupKey.Close();
            }
        }
        else
        {
            startupKey = Registry.CurrentUser.OpenSubKey(runKey, true);
            startupKey.DeleteValue("ZanNews", false);
            startupKey.Close();
        }
    }

Хотя запись появляется в реестре и диспетчере задач, программа не запускается с Windows.

Прежде чем задать этот вопрос, я провел предварительное исследование StackOverflow, и ни одно из предложенных решений и фрагментов кода здесь и здесь не сработало.Либо я получил сообщения об ошибках безопасности и доступа, либо был написан реестр, но программа отказалась запускаться с операционной системой.Однако я вижу, что вышеупомянутые вопросы задавались в 2010 и 2011 годах, и я думаю, что с тех пор все изменилось.

Есть ли способ заставить программу работать при запуске?У меня Windows 10, Home Edition, версия 1803 и .NET Framework 4.7.2, установленная в Windows 10 Апрель 2018 Обновление.

Позже редактирование: другая информация:

  1. Значение Application.ExecutablePath равно C:\\Users\\alexz\\OneDrive\\Programe\\C#/ZanScore/ZanScore/bin/Debug/ZanNews.exe";
  2. Я попытался удалить символ "#", но безуспешно;
  3. Снимок экрана редактора реестра: Screenshot
  4. Снимок экрана диспетчера задач (на румынском языке): Screenshot

1 Ответ

0 голосов
/ 20 февраля 2019

Проведя некоторые исследования, я обнаружил, что это гораздо лучший способ создать ярлык и поместить его в папку Startup.Более подробная информация представлена ​​ здесь , а код (который работает и решает проблему):

        WshShell wshShell = new WshShell();
        IWshRuntimeLibrary.IWshShortcut shortcut;
        string startUpFolderPath =
          Environment.GetFolderPath(Environment.SpecialFolder.Startup);

        // Create the shortcut
        shortcut =
          (IWshRuntimeLibrary.IWshShortcut)wshShell.CreateShortcut(
            startUpFolderPath + "\\" +
            Application.ProductName + ".lnk");

        shortcut.TargetPath = Application.ExecutablePath;
        shortcut.WorkingDirectory = Application.StartupPath;
        shortcut.Description = "Launch My Application";
        // shortcut.IconLocation = Application.StartupPath + @"\App.ico";
        shortcut.Save();

Чтобы использовать вышеуказанный код, необходимо включить IWshRuntimeLibraryпространства имен и добавьте объектную модель хоста сценариев Windows ссылку на проект.

Другая ссылка здесь

...