我用c#写了一个系统服务,这个服务只用于打开一个普通的可执行文件,比如“c:\windows\notepad.exe“。在vs环境中测试时很正常,编译后这个服务也可以正常启动和停止,但是它打开的可执行文件(比如notepad.exe)却不显示界面,在任务管理器中可以看到notepad.exe的进程,用户名是system。而我用这个服务来打开的程序是必须要显示界面的,应该如何解决这个问题?有没有别的方法我需要检测某个exe程序时候处于运行状态?如果没运行则打开程序。
2 回答
互换的青春
TA贡献1797条经验 获得超6个赞
如果要打开界面,就不要以服务形式运行,服务可以在你不登录的情况下就运行,那时根本就没有桌面,想想这个就知道原因了。建议你把你那个服务进程做成一个普通进程,放到启动菜单或者注册表的启动项里面去
慕运维8079593
TA贡献1876条经验 获得超5个赞
一般并不推荐这样做,不过可以尝试把服务属性里面的“允许与桌面交互”勾上,应该就可以了
允许与桌面交互是指后台运行的服务程序可以弹出对话框之类的与用户交互.一般情况下,后台服务程序使用系统帐号或其它指定的帐号运行,并不使用当前登陆的用户名与密码运行(这也就是为什么服务可以在启动后就运行而不管用户是否登陆),当勾选此选项后,将可以与当前登陆的用户交互. |
- 2 回答
- 0 关注
- 1920 浏览
添加回答
举报
0/150
提交
取消