C#上位机配置开机自启动

[复制链接]
查看42558 | 回复0 | 2024-12-24 14:57:22 | 显示全部楼层 |阅读模式
上位机项目很多都要有开机自启动功能。在计算机意外关机或者正常重启后需要能够自动运行。常用的自启动方式有加入启动文件夹、注册表启动项、计划任务和系统服务等几种。

加入启动文件夹

将需要开机自启动程序的快捷方式放入到启动文件夹中即可在系统启动时自动运行该应用程序。删除快捷方式即可取消开机自启动。

开机启动文件夹分为当前用户和所有用户,路径分别如下:

当前用户:

C:\Users<用户名>\AppData\Roaming\

Microsoft\Windows\Start Menu\Programs\Startup

所有用户:

C:\ProgramData\Microsoft\Windows\

StartMenu\Programs\Startup

以当前用户为例,在需要自启动的应用上右击,选择创建快捷方式以生成一个该应用的快捷方式文件。然后在运行窗口中输入“shell:startup”打开启动文件夹。



再将刚刚创建的快捷方式拖到启动文件夹即可。



当然也可以通过代码的方式实现。实现过程其实也就是在启动文件夹里创建应用的快捷方式。这种方式需要在程序中添加对Windows Script Host Object Model的引用。

写注册表启动项

可以将需要开机启动的程序信息写入到注册表

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run里面。

写入代码如下:

RegistryKey reg = Registry.LocalMachine;RegistryKey run = reg.CreateSubKey(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\");
if (AutoRun){  run.SetValue(“程序信息”,”程序路径”);}else{  if (null != run.GetValue(strAppName))  {       run.DeleteValue(strAppName);  }}
run.Close();reg.Close();
代码执行后可以在注册表“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run”种看到该启动信息。



需要注意的是,应用程序需要有管理员权限才能写入注册表信息。

添加到任务计划程序

计划任务程序是Windows自带的一个功能。我们可以将需要运行的任务添加到该计划中。



任务的触发方式可以根据需要选择,比如开启运行、用户登录运行等。可以手动添加,也可以通过代码自动添加。在C#中,可以通过Microsoft.Win32.TaskScheduler实现自动添加。

注册为系统服务

    可通过nssm等工具将我们的应用程序注册为windows服务。注册为windows服务后可以跟随系统自动启动。但是有一点需要注意,Windows服务不适用于带GUI界面的应用。



小结

在这四种方法中,后面两种用得不多。第三种方法启动GUI程序某些情况下会有一些问题,而第四种方法对GUI程序又不太友好。所以如果是GUI程序,推荐第一和第二种方法,对于非GUI程序,推荐第四种方法

实际项目应用

我个人最喜欢第一种方式,就是通过代码将应用加入到开机自启动菜单里面。这种方式不需要管理员权限,比较方便。但是在最近的一个项目中,这种方法不起作用。即使手动把快捷方式复制到启动文件夹里面也没用(本来是通过代码动态添加),但是双击却又可以正常启动。后来改用了写注册表的方式才解决了问题。

HwLib(慧兰博)技术团队专注于高端自动化技术,如果您对我们的技术教程感兴趣的话,可以X宝上搜索店铺“hwlib”或者“慧兰博”





关于HwLib(慧兰博)技术团队的更多信息:www.hwlib.com.cn

HwLib(慧兰博)技术团队技术资料:

https://www.jianguoyun.com/p/DR20ZAEQq_K3CBivk5kD

或者

https://pan.baidu.com/s/1wXJYgFf-FIUVNbC7IHdxEg?pwd=1234

提取码:1234


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则