使用服务安装 msi,如果凭据输入不正确,是否有办法强制安装程序重新提示用户

发布于 2024-08-27 17:07:49 字数 869 浏览 7 评论 0原文

在安装 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);

During install of a windows service (using class MyServiceInstaller : Installer, and ServiceInstaller and ServiceProcessInstaller) is there a way to force the installer to re-prompt the user for their user account info if they enter it incorrectly.

When the incorrect info is given the install throws an error 1001 message saying incorrect username or password, and then the install fails. I want to re-prompt the user until they get it correct, or they cancel out of the credential entry prompt.

Can I override OnBeforeRollback, and and tell it to retry?

    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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽梦忆笙歌 2024-09-03 17:07:49

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

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

I think that when the installer is already about to begin the rollback it's probably too late. Rather, instead of having the installer fail, test that the username and password are correct before it even installs the actual service.

There are various ways to do this, one fairly easy way is to use the LogonUser API function as described here, and here is information about how to use PInvoke to call it from C#.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文