Добавление ярлыка в автозагрузку - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, добавляю свою программу в автозагрузку таким способом:
       public bool SetAutorunValue(bool autorun)
        {
            string name = Path.GetFileNameWithoutExtension(Application.ExecutablePath); //Имя программы которую нужно добавить (без exe)
            string ExePath = System.Windows.Forms.Application.ExecutablePath;
            RegistryKey reg;
            reg = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\");
            try
            {
                if (autorun)
                    reg.SetValue(name, ExePath);
                else
                    reg.DeleteValue(name);
 
                reg.Close();
            }
            catch
            {
                return false;
            }
            return true;
        }
 
//Вызов функции
SetAutorunValue(true); } //Добавить в автозагрузку
SetAutorunValue(false); } //Убрать автозагрузку
Но это работает не на всех ОС, или срабатывает не всегда, возможно что-то блокирует, например антивирус. Помню решал эту проблему добавлением ярлыка программы в ручную в папку автозагрузки, папку открывал командой shell:startup, т.к. этот путь разный на разных ОС, есть необходимость получать этот путь в программе и добавлять туда ярлык программно. Как это можно сделать?

Решение задачи: «Добавление ярлыка в автозагрузку»

textual
Листинг программы
using System;
using Microsoft.Win32.TaskScheduler;
 
class Program
{
   static void Main(string[] args)
   {
      // Get the service on the local machine
      using (TaskService ts = new TaskService())
      {
         // Create a new task definition and assign properties
         TaskDefinition td = ts.NewTask();
         td.RegistrationInfo.Description = "Does something";
 
         // Create a trigger that will fire the task at this time every other day
         td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });
 
         // Create an action that will launch Notepad whenever the trigger fires
         td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));
 
         // Register the task in the root folder
         ts.RootFolder.RegisterTaskDefinition(@"Test", td);
 
         // Remove the task we just created
         ts.RootFolder.DeleteTask("Test");
      }
   }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5