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

我认为当安装程序已经要开始回滚时,可能为时已晚。相反,与其让安装程序失败,不如在安装实际服务之前测试用户名和密码是否正确。

有多种方法可以做到这一点,一种相当简单的方法是使用此处LogonUser描述的 API 函数,这里是有关如何使用 PInvoke 从 C# 调用它的信息。

于 2010-06-14T07:35:45.760 回答