安装Windows服务 - 帐户名和安全ID之间没有映射

cho*_*obo 19 c# service windows-services

我有一个Windows服务和安装项目.当我右键单击安装项目并单击安装时,它会提示我

  • 用户名
  • 密码
  • 确认密码

我尝试了以下组合

.\ MyUserName MyDomain\MyUserName

但它回来时出现以下错误

帐户名和安全ID之间没有映射

ServiceProcessInstaller

namespace TestService
{
    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {

        public ProjectInstaller()
        {
            InitializeComponent();

            this.serviceProcessInstaller1.Account = ServiceAccount.User;
            this.serviceProcessInstaller1.Username = @".\MyUserName"; //username;
            this.serviceProcessInstaller1.Password = "123456"; // password;

            // Add installers to collection. Order is not important.
        }

        private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
        {

        }

        private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e)
        {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

老实说,如果我在代码中设置了用户名和密码,我甚至不确定为什么会提示我输入用户名和密码...

Har*_*run 29

请交叉检查您是否已完成以下步骤(尤其是步骤5):

  1. 创建Windows服务项目后,转到服务类的设计视图(只需双击service1.cs类).

  2. 在设计视图中右键单击并选择Add Installer.这将创建一个名为ProjectInstaller.cs的Installer类.使用ProjectInstaller.cs或配置ProjectInstaller.cs时的任何错误都可能导致在服务控制台中不显示该服务.

  3. 转到ProjectInstaller.cs的设计视图,你会发现两个安装程序 - >

    一个.ServiceInstaller1

    ServiceProcessInstaller1

  4. 右键单击ServiceInstaller1并转到属性选项卡

    a.使用要在服务控制台中查看服务的名称编辑ServiceName.

    b.将StartType更改为Automatic.

  5. 右键单击ServiceProcessInstaller1并转到属性选项卡

    一个.将帐户更改为LocalService

保存并试一试.

  • 5年后,仍然是一个有效的答案 (3认同)
  • 这对我有用,谢谢.如果我想配置更具体的用户,我可以在安装服务后始终这样做. (2认同)
  • @IndieTechSolutions 已经 11 年了,但这里仍然是一个有效的答案! (2认同)

djd*_*lib 9

您的DOMAIN\USERNAME格式对于域名是正确的,但如果您使用的是本地用户名,请使用域名的计算机名称.如果您的主机名是FOO而您的用户名是BAR,那么您将使用FOO\BAR.

您确定您的用户帐户可以升级,对吗?可以通过网络和本地安全策略禁止这种情况.

如果它不起作用,请使用管理员帐户进行尝试.