日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 将程序添加开机启动的三种方式

發布時間:2025/3/11 C# 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 将程序添加开机启动的三种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近在研究程序隨系統啟動,發現在 win7 上因為權限的問題,寫注冊表的時候總是會出現問題,寫不進去導致的不能自動啟動,隨后決定仔細的看一看這方面的問題。

查資料過程中主要發現有三種方式可以添加到啟動,分別是:
1. 開始菜單啟動;
2. 注冊表啟動項;
3. Windows 計劃任務。

一、開始菜單啟動

在很久以前,剛開始捯飭電腦的時候,就知道的一個開機啟動的方法,那時候就是直接把程序的快捷方式創建并復制到“開始”菜單的“啟動”中,并且屢試不爽,當然那時候更多的時候是手動創建,拖動到啟動中的。用程序實現也并不復雜。

總共分兩步:
1. 找到“開始”菜單的“啟動”關聯的目錄;
2. 創建快捷方式到這個目錄;

創建快捷方式代碼:

public static bool Create(string directory, string shortcutName, string targetPath,string description = null, string iconLocation = null) {try{if (!Directory.Exists(directory)){Directory.CreateDirectory(directory);}//添加引用 Com 中搜索 Windows Script Host Object Modelstring shortcutPath = Path.Combine(directory, string.Format("{0}.lnk", shortcutName));IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(shortcutPath);//創建快捷方式對象shortcut.TargetPath = targetPath;//指定目標路徑shortcut.WorkingDirectory = Path.GetDirectoryName(targetPath);//設置起始位置shortcut.WindowStyle = 1;//設置運行方式,默認為常規窗口shortcut.Description = description;//設置備注shortcut.IconLocation = string.IsNullOrWhiteSpace(iconLocation) ? targetPath : iconLocation;//設置圖標路徑shortcut.Save();//保存快捷方式return true;}catch{ }return false; }

注:在使用 WshShell 時,需要添加引用,從 Com 中搜索:Windows Script Host Object Model 添加即可。

開始菜單啟動文件夾的位置獲取:

// 獲取全局 開始 文件夾位置 Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup); // 獲取當前登錄用戶的 開始 文件夾位置 Environment.GetFolderPath(Environment.SpecialFolder.Startup);

二、注冊表開機啟動項

這個相信是大部分同學使用的情況,簡單易懂隱蔽(只是感覺很隱蔽,但是 msconfig 立馬暴露),代碼很簡單,將啟動的項目名稱、文件位置添加到啟動項即可。

// 添加到 當前登陸用戶的 注冊表啟動項 RegistryKey RKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); RKey.SetValue("AppName", @"C:\AppName.exe");// 添加到 所有用戶的 注冊表啟動項 RegistryKey RKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); RKey.SetValue("AppName", @"C:\AppName.exe");

這里需要注意的是,當你使用 regedit 查看注冊表啟動項時,會發現有的啟動項是雙引號引起來的:

AppName C:\AppName.exe

or

AppName “C:\AppName.exe”

如果你的路徑中,帶有空格,需要使用雙引號引起來,這樣能保證在啟動的時候不會出現問題,如下:

// @ 符號中的雙引號需要用兩次來轉義 RKey.SetValue("AppName", @"""C:\AppName.exe""");

三、Windows 計劃任務方式啟動

Windows 的計劃任務方式添加啟動也是可以實現自啟動的方式,但是個人感覺這種方式有點奇葩……

代碼:

//新建任務 TaskSchedulerClass scheduler = new TaskSchedulerClass(); //連接 scheduler.Connect(null, null, null, null); //獲取創建任務的目錄 ITaskFolder folder = scheduler.GetFolder("\\"); //設置參數 ITaskDefinition task = scheduler.NewTask(0); task.RegistrationInfo.Author = author;//創建者 task.RegistrationInfo.Description = desc;//描述 //設置觸發機制(此處是 登陸后) task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON); //設置動作(此處為運行exe程序) IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC); action.Path = file;//設置文件目錄 task.Settings.ExecutionTimeLimit = "PT0S"; //運行任務時間超時停止任務嗎? PTOS 不開啟超時 task.Settings.DisallowStartIfOnBatteries = false;//只有在交流電源下才執行 task.Settings.RunOnlyIfIdle = false;//僅當計算機空閑下才執行IRegisteredTask regTask =folder.RegisterTaskDefinition(name, task,//此處需要設置任務的名稱(name)(int)_TASK_CREATION.TASK_CREATE, null, //usernull, // password_TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,""); IRunningTask runTask = regTask.Run(null);

注意:任務計劃需要添加引用,在 Com 中搜索 TaskScheduler,添加即可,并且要在“嵌入互操作類型”設置為false,使程序編譯時,能從互操作程序集中獲取 COM 類型的類型信息。

匯總代碼

以上就是添加到系統啟動的三種方法,源碼:

源碼下載

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C# 将程序添加开机启动的三种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。