以无密码的用户身份启动服务
-
02-07-2019 - |
题
我正在尝试以用户身份启动服务并且工作正常,直到我尝试没有密码的用户。然后,它无法启动(由于登录错误)。
我做错了什么,或者这是“按设计”?
注册此服务的代码:
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);
解决方案
这可能是由于操作系统安全要求或安全策略造成的。检查安全策略以查看是否有任何相关内容。
其他提示
是的,它确实与安全政策有关。详细说明:
http://technet.microsoft.com/en-us/library /bb457114.aspx
"如果要禁用在没有密码的情况下登录网络的限制,可以通过本地安全策略执行此操作。可以使用本地安全策略或组策略MMC管理单元修改控制空白密码限制的策略设置。您可以使用任一工具在安全设置\本地策略\安全选项中查找此策略选项。帐户的名称为帐户:限制本地帐户使用空白密码仅限控制台登录。它默认启用。“
禁用后,一切正常。
如果没有密码,您需要指定一个空字符串,而不是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);
谢谢 - 我实际上已经尝试过了,但无济于事。
如果我启动services.msc,请手动进入服务属性并清除2个密码字段,然后按“应用”按钮。并尝试启动它,它也失败了。
不隶属于 StackOverflow