详解C#不登录电脑启动程序(图文)

黄舟
发布: 2017-03-28 11:39:12
原创
1752人浏览过

本文主要介绍了创建系统服务;开启服务,启动程序。具有一定的参考价值,下面跟着小编一起来看下吧

阅读目录

  • 创建系统服务

  • 开启服务,启动程序

我们知道开机自启动程序如果在用户不登录的情况下是不启动的,但是服务类程序是可以跨过用户登录启动的,例如IIS服务,SQL服务。如果我们已经写好了桌面应用程序,又希望他开机自启动,那就需要借助系统服务在未登录的时候打开程序。

创建系统服务

在VS中创建Windows服务:

在Service的OnStart方法中,启动程序,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

protected override void OnStart(string[] args)

{

 if (!IsExistProcess("程序名"))

 {

  //程序路径

  string exePath = "";

  Process.Start(exePath);

 }

 string path = AppDomain.CurrentDomain.BaseDirectory;

 FileInfo fi = new FileInfo(path + "\info.txt");

 using (FileStream stream = fi.OpenWrite())

 {

  StreamWriter streamWriter = new StreamWriter(stream);

  streamWriter.Write("服务启动日期:" + DateTime.Now.ToString());

  streamWriter.Flush();

  streamWriter.Close();

 }

}

protected override void OnStop()

{

 string path = AppDomain.CurrentDomain.BaseDirectory;

 FileInfo fi = new FileInfo(path + "\info.txt");

 using (FileStream stream = fi.OpenWrite())

 {

  StreamWriter streamWriter = new StreamWriter(stream);

  streamWriter.Write("服务关闭日期:" + DateTime.Now.ToString());

  streamWriter.Flush();

  streamWriter.Close();

 }

}

/// <summary>

/// 判断进程是否开启

/// </summary>

/// <param name="processName"></param>

/// <returns></returns>

private bool IsExistProcess(string processName)

{

 Process[] MyProcesses = Process.GetProcesses();

 foreach (Process MyProcess in MyProcesses)

 {

  if (MyProcess.ProcessName.CompareTo(processName) == 0)

  { return true; }

 }

 return false;

}

登录后复制

在Service的设计视图添加安装程序:

设置ProcessInstaller的Account为LocalSystem

设置serviceInstaller的StartType为Automatic,ServiceName和Description为进程中显示的名字和描述

回到目录

开启服务,启动程序

程序编译好,取出BIN文件夹,添加开启服务和关闭服务的批处理文件,如下图:

开启桌面程序的关键点,更改进程登录模式

安装后启动.bat内容为:

1

2

3

4

5

6

7

8

安装服务

C:WindowsMicrosoft.NETFramework 4.0.30319installutil AutoStart.exe

停止服务

sc stop AutoStartHik

更改登录

sc config AutoStartHik type= interact type= own

启动服务

sc start AutoStartHik

登录后复制

卸载服务.bat内容为:

1

2

段落引sc stop AutoStartHik

C:WindowsMicrosoft.NETFramework 4.0.30319installutil AutoStart.exe /u

登录后复制

至此执行启动服务的bat文件后完成,开机自启动桌面程序。

注:有朋友在问题中提到了运行的问题,我在这里截张图

运行后的程序如果有和桌面交互的语句,会有以下提示,如你MessgeBox语句

点进去之后会有一个全新的桌面,上面运行着你通过服务启动的程序,如果和桌面不交互,你在进程里可以看到exe正在运行,他的显示界面在交互式服务里自己安静的运行。

以上就是详解C#不登录电脑启动程序(图文)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
c#
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号