一个程序,如何知道自身是以系统服务还是一般程序的形式运行?

viewerviewer 2009-03-17 11:58:12
一个程序,如何知道自身是以系统服务还是一般程序的形式运行?
若是系统服务,又如何知道自身在系统中所注册的服务名称?
谢谢!
...全文
55 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2009-03-17
  • 打赏
  • 举报
回复
服务程序在WinMain函数中调用StartServiceCtrlDispatcher函数,注册自己所提供的所有服务名称及各自的ServiceMain入口地址。如果进程是作为服务被加载,该函数不会返回,服务管理器会根据启动的服务名称调用相应的ServiceMain函数。如果StartServiceCtrlDispatcher返回了,就说明是普通进程。
oyljerry 2009-03-17
  • 打赏
  • 举报
回复
EnumService()枚举系统服务,获得你当前程序的服务信息
oyljerry 2009-03-17
  • 打赏
  • 举报
回复
查看当前进程token等,获取是否为SYSTEM权限...
会思考的草 2009-03-17
  • 打赏
  • 举报
回复
取当前的用户名就行了。服务以SYSTEM账户运行。
jameshooo 2009-03-17
  • 打赏
  • 举报
回复
服务管理器启动服务进程时会增加一个命令行参数-service(好像是这个,忘了),在服务启动时打个日志看看。就算没有这种参数,也可以自己设计参数,在创建服务时指定启动参数即可,完全自由选择,你的程序根据命令行参数的不同来选择是以普通方式运行还是以服务方式运行。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧