Добавление ярлыка в автозагрузку - C#
Формулировка задачи:
Здравствуйте, добавляю свою программу в автозагрузку таким способом:
Но это работает не на всех ОС, или срабатывает не всегда, возможно что-то блокирует, например антивирус.
Помню решал эту проблему добавлением ярлыка программы в ручную в папку автозагрузки, папку открывал командой shell:startup, т.к. этот путь разный на разных ОС, есть необходимость получать этот путь в программе и добавлять туда ярлык программно. Как это можно сделать?
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); } //Убрать автозагрузку
Решение задачи: «Добавление ярлыка в автозагрузку»
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"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д