开启自启动的两种方式
1:修改注册表
RegistryKey run = Registry.CurrentUser.CreateSubKey(@"SoftwareMicrosoftWindowsCurrentVersionRun");//当前用户
RegistryKey run = Registry.LocalMachine.CreateSubKey(@"SoftwareMicrosoftWindowsCurrentVersionRun");//当前设备的所有用户
run.SetValue(key, value); //value是指定开启文件的路径
2:通过在C:UserswangbiaoAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup创建lnk方式
string StartupPath = System.Environment.GetFolderPath(Environment.SpecialFolder.Startup);
string ink = StartupPath + "\xxxx.lnk"; //快捷方式的名称
string exepath =exename; //程序完成路径名称
if (!File.Exists(ink))
{
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(ink);//创建快捷方式对象
shortcut.TargetPath = exepath;//指定目标路径
shortcut.WorkingDirectory = Path.GetDirectoryName(exepath);//设置起始位置
shortcut.WindowStyle = 1;//设置运行方式,默认为常规窗口
shortcut.Description = "Auto run CJ Smart Wifi";//设置备注
//shortcut.IconLocation = string.IsNullOrWhiteSpace(iconLocation) ? targetPath : iconLocation;//设置图标路径
shortcut.Save();//保存快捷方式
}
**没有管理员权限的程序通过这两种方式都可以正常启动,有管理员权限的则不行
让有管理员权限的程序开机自启动
方法:让一个没有管理员的程序设置自启动,开启自启动后,呼叫管理 员权限的程序
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.FileName =ExeName"; //ExeName有管理员权限的程序完整路径
//设置启动动作,确保以管理员身份运行
startInfo.Verb = "runas";
try
{
System.Diagnostics.Process.Start(startInfo);
Environment.Exit(0);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}