检查用户是否可以启动服务

Check if user can start service

我刚刚在网上搜索了很多,但找不到任何帮助。我有自己的 windows 服务,现在应该可以从我的主软件配置它了。

我安装、启动、停止、更改和卸载都没有问题。我还可以使用其他用户凭据安装该服务。

但是问题来了。在安装服务之前 ("cmd" call sc create SERVICENAME [...]) 我想检查用户是否输入凭据可以启动服务或不。所以我需要检查他是否在本地 "Log On as a Service" 安全策略中输入。我不想改变政策,我只是想看看他是否被允许这样做。

是否可以在 C# 中简单地进行此检查?

"Log On as a Service" 似乎是 LOGON32_LOGON_SERVICE 的登录类型,您可以从 Advapi32.dll 获取。我发现的第一件事(这可能是最有帮助的)是尝试以用户身份登录的 LogonUser function,因此如果以 LOGON32_LOGON_SERVICE 身份登录您的用户,它可以用作检测用户失败或成功。

Here 是核心服务器功能的完整列表。列出的一些看起来很有前途,但可能需要反复试验,例如 AuditQuerySystemPolicy 等。祝你好运!