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

时间:2011-06-16 16:50:29

标签: 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)
        {

        }
    }
}

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

5 个答案:

答案 0 :(得分:27)

请交叉检查您是否已完成以下步骤(特别是第5步):

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

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

  3. 转到ProjectInstaller.cs的设计视图,你会在那里找到两个安装程序 - >

    一个。的 ServiceInstaller1

    b。 ServiceProcessInstaller1

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

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

    b。将 StartType 更改为自动

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

    一个。将帐户更改为 LocalService

  6. 保存并尝试。

答案 1 :(得分:9)

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

您确定允许您的用户帐户升级,对吗?可以通过网络和本地安全策略来禁止它。

如果管理员帐户不起作用,请尝试使用。

答案 2 :(得分:2)

我找到了解决这种情况的方法----但是我正在使用 VM WARE克隆了2008 r2。

使用以下步骤更改有问题的Server 2008 R2上的SID:

http://www.brajkovic.info/windows-server-2008/windows-server-2008-r2/how-to-change-sid-on-windows-7-and-windows-server-2008-r2-using-sysprep/

这有助于我删除错误。

答案 3 :(得分:1)

只需在下面的InitializeComponent方法安装程序中添加配置代码即可。

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

答案 4 :(得分:0)

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

Change the account to **LocalService**

这对我有用