web-dev-qa-db-ja.com

Windowsサービスのインストール-アカウント名とセキュリティIDの間のマッピングは行われませんでした

Windowsサービスとセットアッププロジェクトがあります。セットアッププロジェクトを右クリックして[インストール]をクリックすると、プロンプトが表示されます

  • Username
  • パスワード
  • パスワードを認証する

私は以下の組み合わせを試しました

。\ 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)
        {

        }
    }
}

正直なところ、コードで設定した場合、なぜユーザー名とパスワードの入力を求められるのかさえわかりません...

21
chobo

次の手順(特に手順5)を実行したかどうかをクロスチェックしてください。

  1. Windowsサービスプロジェクトを作成したら、サービスクラスのデザインビューに移動します(service1.csクラスをダブルクリックするだけです)。

  2. デザインビューで右クリックし、[インストーラーの追加]を選択します。これにより、ProjectInstaller.csという名前のインストーラークラスが作成されます。 ProjectInstaller.csがない場合、またはProjectInstaller.csの構成でエラーが発生した場合、サービスコンソールにサービスが表示されない可能性があります。

  3. ProjectInstaller.csのデザインビューに移動すると、そこに2つのインストーラーがあります->

    a .ServiceInstaller1

    b .ServiceProcessInstaller1

  4. ServiceInstaller1を右クリックして、[プロパティ]タブに移動します

    a。サービスコンソールにサービスを表示する名前でServiceNameを編集します。

    b .StartType自動に変更します。

  5. ServiceProcessInstaller1を右クリックして、[プロパティ]タブに移動します

    a。アカウントをLocalServiceに変更します

保存してお試しください。

32
Harun

DOMAIN\USERNAMEの形式はドメインに対して正しいですが、ローカルユーザー名を使用している場合は、ドメイン名にコンピューター名を使用してください。ホスト名がFOOで、ユーザー名がBARの場合、FOO\BARを使用します。

ユーザーアカウントのエスカレーションが許可されていると確信していますよね?ネットワークとローカルセキュリティポリシーを介してそれを禁止することは可能です。

それが機能しない場合は、管理者アカウントで試してみてください。

9
djdanlib

この状況の解決策を見つけました----ただし、VM WARE cloned 2008r2'sを使用しています。

次の手順を使用して、問題のServer 2008R2の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 /

これは私がエラーを取り除くのを助けました。

2
HLJones

InitializeComponentメソッドインストーラーに以下の構成コードを追加するだけです。

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
1
Chamath Jeevan

ServiceProcessInstaller1を右クリックして、[プロパティ]タブに移動します

Change the account to **LocalService**

これは私のために働いた

0
Null Pointer