gpt4 book ai didi

c# - 在 lpServiceStartName 中显式指定本地域时调用 CreateService 出错

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:55 26 4
gpt4 key购买 nike

我正在通过对 CreateService 的 win32 API 调用,使用 C# 在机器上创建服务。该函数的 MSDN 页面说明了 lpServiceStartName 参数:

The name of the account under which the service should run. If the service type is SERVICE_WIN32_OWN_PROCESS, use an account name in the form DomainName\UserName. The service process will be logged on as this user. If the account belongs to the built-in domain, you can specify .\UserName.

在远程机器上,用户 myuser 属于默认本地域 WORKGROUP。如果我通过 ".\myuser",一切正常。如果我传递 "WORKGROUP\myuser",我会得到 ERROR_INVALID_SERVICE_ACCOUNT

我对这种行为很好奇,因为上面的文档似乎说我可以指定.\myuser,而不是我必须 .任何人都可以阐明这一点吗?

最佳答案

首先,我不是 Windows 帐户管理方面的专家,在这里我可能会遭到一些反对,但这是我在测试 Windows 服务登录身份时注意到的。如文档所述,如果帐户属于内置域,则可以指定“.\UserName”。内置域包括安装操作系统时创建的组和用户 (link)。因此,您可以指定“BUILTIN\UserName”而不是“.\UserName”,因为 BUILTIN 是内置域的名称。

实际上,它对“BUILTIN\Administrators”和“BUILTIN\Guests”有效,但对用户“BUILTIN\Guest”无效。如果您尝试创建一个新的本地组和本地用户并将其设置为登录身份,您仍然会以“.\UserName”的形式看到它。这在文档中可能不准确,但无论如何,对于不是内置帐户的本地用户帐户,您可以将点替换为机器名称:“MACHINE\UserName”。

关于c# - 在 lpServiceStartName 中显式指定本地域时调用 CreateService 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com