c# - 如何检查给定的 Windows 用户是否可以作为服务登录
问题描述
我必须为 Windows 安装程序 (WiX 3) 编写自定义操作,以检查 Windows 帐户以用于将安装的 Windows 服务。
此处不能为服务使用 LocalSystem 帐户,因为该服务必须使用 Windows 文件共享,由它们的 UNC 路径给出。
这是我到目前为止写的代码:
public class CustomActions
{
[CustomAction]
public static ActionResult VerifyServiceUser(Session session)
{
try
{
session.Log("VerifyServiceUser: Begin");
PrincipalContext context = null;
if (session["SERVICE_USERNAME"].Contains("\\"))
{
context = new PrincipalContext(ContextType.Domain);
}
else
{
context = new PrincipalContext(ContextType.Machine);
}
using (context)
{
if (context.ValidateCredentials(session["SERVICE_USERNAME"], session["SERVICE_PASSWORD"]))
{
// TODO: Check the user is allowed to login as a service.
session["SERVICE_USER_VALID"] = "1";
}
}
session.Log("VerifyServiceUser: End");
}
catch (Exception ex)
{
session.Log("VerifySqlConnection: exception: {0}", ex.Message);
throw;
}
return ActionResult.Success;
}
}
如果允许用户作为服务登录,我找不到有关如何使用 c# 检查的任何信息。这在这里是绝对必要的。
希望你能帮助我解决这个问题。