Windows EXE可以作为服务或应用程序运行.如何确定它是否作为服务运行?

kev*_*ite 6 c windows winapi windows-services

我正在寻找一个Win32 API调用来返回我的进程的运行时上下文.我希望能够以编程方式测试我是作为服务运行还是作为标准应用程序进程运行.

想到了几个想法....因为我总是有服务DAD.exe,有​​时作为他的孩子和服务上下文运行SON.exe ---有时SON.exe不是由DAD和用户启动的.

SON.EXE会做API whoami()来了解他正在运行的上下文.

现在DAD可以创建一个环境var - 然后SON可以测试这个变量 - 如果发现他知道他是DAD的儿子并因此作为服务运行.....但这很弱......

另一个想法是查看我的SID或令牌,看看我是否可以做出这个决定....再次看起来最好比单个API检查更复杂......

Dav*_*nan 1

对此的简单的低技术解决方案是注册您的服务以使用将其标识为服务的命令行参数来运行。