C#設(shè)置程序開(kāi)機(jī)啟動(dòng)的實(shí)現(xiàn)示例
1:獲取當(dāng)前用戶:
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent(); System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
2:判斷當(dāng)前用戶是否是管理員如果是則直接啟動(dòng)否則通過(guò)Process啟動(dòng):
(如果不這樣處理直接使用非admin權(quán)限對(duì)注冊(cè)表進(jìn)行編輯操作程序?qū)?bào)異常)
if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator)) { //如果是管理員則直接啟動(dòng) Application.Run(new Form1()); } else { System.Diagnostics.ProcessStartInfo startinfo = new System.Diagnostics.ProcessStartInfo(); //啟動(dòng)的應(yīng)用程序 startinfo.FileName = Application.ExecutablePath; //設(shè)置啟動(dòng)動(dòng)作,以管理員身份啟動(dòng) startinfo.Verb = "runas"; var process= System.Diagnostics.Process.Start(startinfo); Application.Exit(); }
3:對(duì)注冊(cè)表進(jìn)行編輯,設(shè)置啟動(dòng)路徑
RegistryKey runKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",true); //當(dāng)前啟動(dòng)的項(xiàng)目 //string app = Application.ExecutablePath; //獲取的路徑格式為:D:\Program Files (x86)/360/360Safe/safemon/360tray.exe //該格式無(wú)法達(dá)到開(kāi)機(jī)啟動(dòng)的目的。 string app = System.Reflection.Assembly.GetExecutingAssembly().Location; //格式:D:\Program Files (x86)\360\360Safe\safemon\360tray.exe //該格式實(shí)現(xiàn)開(kāi)機(jī)啟動(dòng) Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN").SetValue("MyAngel", app, RegistryValueKind.String); //打開(kāi)注冊(cè)表中的現(xiàn)有項(xiàng)并設(shè)置其中的鍵值類(lèi)型
4:注銷(xiāo)開(kāi)機(jī)自啟動(dòng)功能(可選):
//刪除該啟動(dòng)項(xiàng) RegistryKey runKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", RegistryKeyPermissionCheck.ReadWriteSubTree); runKey.DeleteValue("MyAngel"); runKey.Close();
5:特別注意事項(xiàng):
1,雖然使用:
Registry.LocalMachine.CreateSubKey(@"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN").SetValue("MyAngel", app, RegistryValueKind.String);
理論上添加的鍵值信息應(yīng)該是存儲(chǔ)在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
實(shí)際上有可能存儲(chǔ)在:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
2,設(shè)置的值其格式必須注意:
SetValue("MyAngel", app, RegistryValueKind.String);
app存儲(chǔ)的字符串格式只能是:D:\Program Files (x86)\360\360Safe\safemon\360tray.exe
而不能是:D:\Program Files (x86)/360/360Safe/safemon/360tray.exe
如果格式異常則無(wú)法達(dá)到開(kāi)機(jī)自啟動(dòng)的目的。
到此這篇關(guān)于C#設(shè)置程序開(kāi)機(jī)啟動(dòng)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C# 程序開(kāi)機(jī)啟動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# Onnx實(shí)現(xiàn)DIS高精度圖像二類(lèi)分割
這篇文章主要為大家詳細(xì)介紹了C# Onnx實(shí)現(xiàn)DIS高精度圖像二類(lèi)分割的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11C#獲取某路徑文件夾中全部圖片或其它指定格式的文件名的實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于C#獲取某路徑文件夾中全部圖片或其它指定格式的文件名的實(shí)例方法,需要的朋友們參考下。2019-10-10C#實(shí)現(xiàn)仿QQ抽屜式窗體的設(shè)計(jì)方法
QQ軟件對(duì)于絕大多數(shù)的人來(lái)說(shuō)再熟悉不過(guò)了,它以使用方便、界面美觀及功能完善而著稱,本文給大家介紹了C#實(shí)現(xiàn)仿QQ抽屜式窗體的設(shè)計(jì)方法,主要通過(guò)使用API函數(shù)WindowFromPoint和GetParent實(shí)現(xiàn)仿QQ的抽屜式窗體,需要的朋友可以參考下2024-04-04C#中new和override的區(qū)別個(gè)人總結(jié)
這篇文章主要介紹了C#中new和override的區(qū)別個(gè)人總結(jié),本文以問(wèn)答的方式講解了new和override的區(qū)別,需要的朋友可以參考下2015-06-06詳解.NET 6如何實(shí)現(xiàn)獲取當(dāng)前登錄用戶信息
這篇文章主要介紹了.NET 6在應(yīng)用開(kāi)發(fā)時(shí)是如何實(shí)現(xiàn)當(dāng)前登陸用戶信息獲取的,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2022-01-01