服务(Service)的概念及常见问题

来源:互联网 发布:fuzor软件 baidu 编辑:程序博客网 时间:2024/05/22 09:57
概念:
1.只在Windows NT以上的版本中才有服务。
2.用服务管理器(SCM)来管理服务(启动、停止、禁用等)
3.服务的启动方式:
a)自动:当操作系统启动后自动启动,在登录前就已经启动
b)手动:必须手工启动。
4.服务所用的账号:SYSTEM(系统账号)

常见问题:
1.账号问题:在服务中直接调用GetUserName得到的账号是SYSTEM,如果想得到当前登录用户的账号,必须模拟用户。
2.服务启动的程序问题:在服务中直接调用CreateProcess或者ShellExec启动的进程还是服务,即该进程运行在SYSTEM账号下,如果想启动用户进程,需要使用CreateProcessAsUser。
3.注册表:在服务中访问HKEY_CURRENT_USER注册表键下的值,通过regedit一般看不到,如果想访问当前登录用户的注册表,必须模拟 用户,并且还要注意先关闭HKEY_CURRENT_USER键,即RegCloseKey(HKEY_CURRENT_USER)。
4.访问文件:在服务中访问文件最好是给出文件的全路径,因为服务是由系统启动的,所以当前的路径不是exe文件的路径。
5.UI显示:一般情况下,不在服务中显示UI,而应该由服务启动用户进程来显示UI。如果必须在服务中显示UI,则需要在安装服务时,把服务的属性加上SERVICE_INTERACTIVE_PROCESS。
6.删除服务:用API删除,不用命令行参数。 
原创粉丝点击