C++ 如何在Windows7中以LocalSystem运行服务?
我正试图按照Windows SDK中的说明编写我的第一个服务应用程序。我使用以下代码安装了该服务:C++ 如何在Windows7中以LocalSystem运行服务?,c++,winapi,windows-7,windows-services,C++,Winapi,Windows 7,Windows Services,我正试图按照Windows SDK中的说明编写我的第一个服务应用程序。我使用以下代码安装了该服务: SC_HANDLE schs=CreateService(sch, SERVICENAME,"VMFS - Servidor de arquivos", SC_MANAGER_CREATE_SERVICE, SERVICE_W
SC_HANDLE schs=CreateService(sch,
SERVICENAME,"VMFS - Servidor de arquivos",
SC_MANAGER_CREATE_SERVICE,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL,
pathexe,
NULL/*LoadOrderGroup*/,
NULL/*TagId*/,
NULL/*Dependencies*/,
NULL/*Account:Local System*/,
NULL/*Password*/);
服务器未启动(错误1053)
但是,如果我转到services.msc并将服务更改为以我的帐户名(Valdeci)登录,服务将启动。所以这似乎是一个登录错误。怎么了?我也想在Windows XP和Vista中运行我的服务,但没有尝试,因为我的开发机器有Windows 7。尝试使用NULL而不是“\\LocalSystem”,如中所述。我解决了我的问题!我遵循我收到的提示:将代码剥离为“不做任何事”服务,但仍然不起作用。所以我得出结论,问题不在于代码本身。由于“缺少”DLL,该程序甚至没有启动。我发现当作为LocalSystem运行时,“path”的工作方式不同,所以我将所有运行时DLL复制到服务的文件夹中。这是我通常安装程序的方式,但在开发时我使用路径
谢谢你的时间 LocalSystem是默认帐户。我将重点调试您的服务的启动代码,以便了解当用户帐户不是您自己的帐户时,为什么它会失败。我不知道如何调试服务的启动代码。我使用C++Builder。我试过了,不工作,我改为“.\LoalSaleStand”,但也没有工作。您的服务正在启动,但没有及时报告它的状态(这就是1053个意思)。您的代码在ServiceMain()中执行什么操作,该函数被调用以启动您的服务?它是否访问网络、映射驱动器、注册表等。?试着尽可能地剥离它来调试这种情况。谢谢你的回答。我会尽量减少代码,看看它是否有效。但是,正如我所说,当我将帐户更改为我的个人帐户时,它会工作,我的ServiceMain会快速报告状态。好的。我提到的事情(访问映射驱动器、读取注册表)对每个用户的操作都不同,这可能解释了为什么该服务在您的帐户中工作,但在LocalSystem中不工作。我的系统路径不包括DLL的路径。仅设置了用户路径。现在,我使系统路径等于用户路径,不需要将DLL复制到服务路径。