win10系统不登录桌面,应用程序开机自动启动

470 阅读3分钟

服务器上部署了像素流服务器,但是有时候因为显卡未及时启动,部分程序卡bug,系统更新等等原因,服务器经常会异常重启,无法随时跟踪到服务器什么时候重启了导致应用程序没起,于是决定搞一个开机启动,自动启动我们的应用程序,这样再也不用手动维护了,说干就干。

核心步骤

image.png

具体操作

1.下载环境组件

服务环境文件 Instsrv.exe、Srvany.exe 网盘下载地址,我们可以借助这两个文件吧我们自己开发的应用安装到系统里,然后用开机时拉起我们的程序运行

链接:pan.baidu.com/s/1DFC5q6bT… 提取码:45ca

2.cmd环境配置

找到这两个文件所在地址,我放在E盘下的autoStart文件夹下,命令行格式如下图所示打开命令行CMD,输入“%path%\instsrv ServerName %path%\srvany.exe” 后回车;,UeServer就是我们自己给应用程序起的服务名称,命令行执行后出现下面服务成功添加,说明添加服务名称的操作成功执行 d7a4efa48f0bc7b6018f9ad07c10d20.png

3.注册表配置

win+r ,运行中输入: regedit

image.png 在下面路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services找到刚刚起的UeServer服务

  • UeServer 右键新建项 Parameters
  • Parameters 右键新建字符串值AppDirectory (用来存放应用程序所在文件夹路径)
  • Parameters 右键新建字符串值Application (要执行的应用程序exe或者批处理bat地址)
  • Parameters 右键新建字符串值AppParameters (启动程序需要的参数,没有可不填值) 配置完的注册表如下图所示

image.png

4.服务项配置

win+R打开运行,输入services.msc服务控制面板,找到UeServer(这个名称是上一步新建的服务名称) 右键属性

1.登录,勾上允许服务与桌面交互

image.png

2.常规

这里选择自动(延迟启动) ---很重要,

我之前按照上面的步骤做了,但电脑重启后,主服务显示正在运行,但是个别子服务没有起起来,比如nginx。还需要手动重新启动服务,服务才真正运行发送数据,后来找了一圈才找到,需要用延时启动,程序要比网卡晚启动才可以,所以这里的配置改为自动(延迟启动)

image.png

然后应用,直接重启电脑,发现没有登录服务器服务也可以正常调用,完美实现

没有UI操作界面

服务虽然正常了,但是登入服务器发现,整个服务界面都没展示出来,打开任务管理器看到主服务和子服务都已经正常启动,应该是运行在不同的session(会话)下的原因,可以用任务管理器看到,服务都是运行在session 0 下面,我们登录用户运行在别的session会话下面,session 0这个会话下的程序由于session隔离,看不到界面的。因为从系统安全机制考虑,没有登入桌面实际用户也是不需要看到界面的,开机自启动的后台应用有很高的系统权限,默认就只会在后台运行,不展示ui防止误操作。

虽然看不到界面,但是服务在跑也解决了99%的问题,再也不用担心服务器重启服务停掉的问题了。如果要关掉应用程序,可以在任务管理器关闭相应服务即可

扩展(登入桌面后自动开启应用程序)

如果不需要服务器重启里面后台启动服务,可以直接把应用程序的批处理bat放到开机启动项即可

运行下面命令,进入开机启动文件夹,放入启动应用程序的bat文件,重启电脑登入桌面,发现可以自动启动应用程序(这种方式是带程序界面的噢)

image.png