如何在运行.exe文件的c ++中制作Windows服务? [英] How to make a windows services in c++ that run .exe file ?

查看:128
本文介绍了如何在运行.exe文件的c ++中制作Windows服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在c ++中执行可以访问和运行.exe文件的Windows服务

解决方案

问题是服务的访问权限。它运行在一个帐户下,该帐户不允许使用UI运行exe文件。



如果一项服务想要运行exes而不是你需要冒充启动:



 BOOL b = :: LogonUser(pszUser,NULL,密码,LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,& hToken); 
PROCESS_INFORMATION pi = {0};
BOOL b = :: CreateProcessAsUser(hToken,NULL,(LPTSTR)pszCommandLine,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,NULL,NULL,& pi);


尝试使用以下链接在c ++中创建窗口服务

赢得服务c ++



这里你知道如何运行exe

运行赢取服务的运营商


< blockquote>如果您只需要运行可执行文件,为什么不使用 Windows任务计划程序 [ ^ ]?


i want to do windows service in c++ that can access and run .exe file

解决方案

The problem are the access rights of the service. It runs under an account which isnt granted to run exe files with UI.

If a service want to run exes than you need to impersonate for launching:

BOOL b = ::LogonUser( pszUser, NULL, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken );
PROCESS_INFORMATION pi = {0};
BOOL b = ::CreateProcessAsUser( hToken, NULL, (LPTSTR) pszCommandLine, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, NULL, &pi);


Try the below link to make the window service in c++
Win service c++

Here you got an idea how to run exe
run exe via win service


If you just need to run executable files, why don't you use the Windows Task Scheduler[^]?


这篇关于如何在运行.exe文件的c ++中制作Windows服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆