3

Windowsサービスのインストール中に(クラスMyServiceInstaller:Installer、およびServiceInstallerとServiceProcessInstallerを使用)、ユーザーが誤って入力した場合に、インストーラーにユーザーアカウント情報の再入力を強制する方法があります。

間違った情報が与えられると、インストールは間違ったユーザー名またはパスワードを示すエラー1001メッセージをスローし、インストールは失敗します。ユーザーが正しくなるまで、または資格情報の入力プロンプトをキャンセルするまで、ユーザーに再度プロンプトを表示したいと思います。

OnBeforeRollbackをオーバーライドして、再試行するように指示できますか?

    private ServiceInstaller _ServiceInstaller;
    private ServiceProcessInstaller _ProcessInstaller;

    public GBServiceInstaller()
    {
        InitializeComponent();
        _ServiceInstaller = new ServiceInstaller();
        _ProcessInstaller = new ServiceProcessInstaller();
        _ServiceInstaller.ServiceName = MyService.SERVICENAME;
        _ServiceInstaller.Description = MyService.SERVICEDESCRIPTION;
        _ServiceInstaller.StartType = ServiceStartMode.Manual;
        Installers.Add(_ServiceInstaller);
        Installers.Add(_ProcessInstaller);
4

1 に答える 1

2

インストーラーがすでにロールバックを開始しようとしているときは、おそらく手遅れだと思います。むしろ、インストーラーが失敗する代わりに、実際のサービスをインストールする前に、ユーザー名とパスワードが正しいことをテストしてください。

これを行うにはさまざまな方法があります。非常に簡単な方法の1つは、ここで説明LogonUserするAPI関数を使用することです。ここでは、PInvokeを使用してC#から呼び出す方法について説明します。

于 2010-06-14T07:35:45.760 に答える