2008-09-24 50 views
2

我试图以用户身份启动服务,并且事情工作正常,直到我尝试没有密码的用户。然后,它无法启动(由于登录错误)。以无密码的用户身份启动服务

我做错了什么或者这是“按设计”?

代码注册该服务:

SC_HANDLE schService = CreateService( 
     schSCManager,   
     strNameNoSpaces,  
     strServiceName,   
     SERVICE_ALL_ACCESS,  
     SERVICE_WIN32_OWN_PROCESS, 
     SERVICE_AUTO_START,  
     SERVICE_ERROR_NORMAL,  
     szPath,     
     NULL,      
     NULL,     
     NULL,      
     strUser, 
     (strPassword.IsEmpty())?NULL:strPassword); 

回答

2

这可能是由于操作系统安全要求或安全策略。检查安全策略,看看有没有什么相关的。

+0

这几乎是一个香草XP安装。我简单地看了一下策略,但没有发现任何相关的内容,至少我没有发现任何与服务和登录和密码有关的事情。 – dennisV 2008-09-25 00:49:14

0

你需要的,如果没有密码,指定一个空字符串,而不是NULL。 NULL不是一个有效的空字符串,“”是。可能你应该通过strPassword作为最后一个参数。

SC_HANDLE schService = CreateService( 
      schSCManager,   
      strNameNoSpaces,  
      strServiceName,   
      SERVICE_ALL_ACCESS,  
      SERVICE_WIN32_OWN_PROCESS, 
      SERVICE_AUTO_START,  
      SERVICE_ERROR_NORMAL,  
      szPath,     
      NULL,      
      NULL,     
      NULL,      
      strUser, 

// change this line to: 
      strPassword.IsEmpty() ? L"" : strPassword); 
// or maybe 
      strPassword); 
+0

谢谢 - 即使我手动启动服务,它也不起作用。也许别的地方有什么错? – dennisV 2008-09-25 00:18:33

0

谢谢 - 我已经试过,其实第一次,但无济于事。

如果我启动services.msc,手动进入服务属性并清除2个密码字段,然后按“应用”并尝试启动它,它也失败。

2

是的,这确实与安全策略有关。为了详细说明:

http://technet.microsoft.com/en-us/library/bb457114.aspx

“如果你想禁用伐木行为限制到网络上无密码,您可以通过本地安全策略做控制空白密码的限制可以修改的策略设置。使用本地安全策略或组策略MMC管理单元您可以使用以下任一工具找到此策略选项安全设置\本地策略\安全选项。策略名称为帐户:限制本地帐户使用空白控制台登录密码只有,默认启用。“

禁用后,它一切正常。

相关问题