首页 > 解决方案 > 如何检查给定的 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# 检查的任何信息。这在这里是绝对必要的。

希望你能帮助我解决这个问题。

标签: c#wixcustom-action

解决方案


推荐阅读