如何在Windows 7中以LocalSystem身份运行服务?

时间:2012-08-18 12:27:17

标签: c++ winapi windows-7 windows-services

我正在尝试按照Windows SDK中的说明编写我的第一个服务应用程序。我使用以下代码安装了服务:

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。

2 个答案:

答案 0 :(得分:1)

尝试使用NULL而不是“。\\ LocalSystem”,如CreateService documentation中所述。

答案 1 :(得分:0)

我解决了我的问题!我按照我收到的提示:将代码剥离为“无所事事”服务,但仍无法正常工作。所以我得出结论,问题不在于代码本身。该程序甚至没有启动,因为“丢失”DLL。我发现“path”在作为LocalSystem运行时的工作方式不同,所以我将所有运行时DLL复制到服务的文件夹中。这是我正常安装程序的方式,但在开发时我使用路径。

谢谢你的时间!