重启电脑后出现的 Bootstrapper window

Bootstrapper window that appears after restarting the computer

这种行为是如何设置的?我找不到如何禁用引导程序在重新启动时启动。我将安装程序,关闭计算机,第二天,当我启动计算机时,会出现引导程序 window。即使它会卸载引导程序。而当我在测试中多次安装它时,恰好后来我有几个windows。但是这个弹窗不是每次都会有,不知道是什么原因。

编辑

查看 RegisterBegin 之后的日志:

Session begin, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{bf97c7e8-2ef4-4439-9504-96a7736c10f4}, options: 0x4, disable resume: No Registering bundle dependency provider: {bf97c7e8-2ef4-4439-9504-96a7736c10f4}, version: 1.0.120.0 Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{bf97c7e8-2ef4-4439-9504-96a7736c10f4}, resume: Active, restart initiated: No, disable resume: No

你看disable resume: No,我找不到任何相关信息,但可能会导致应用程序在重启后运行。

编辑2

这是因为引导程序添加寄存器 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce。

但找不到如何关闭它。

最终,这样做的原因是为引导程序添加了 RunOnce 注册表。网上写着,根据开发者的说法,这是对安装成功的确认。但就我而言,这对我来说是不必要的,因为我自己进行 post-configuration 测试。为了防止这种情况,我连接到 OnRegisterComplete 事件并删除了所有包含我的安装程序名称的寄存器。

但是,这需要 运行 具有管理权限的引导程序。

    private void OnRegisterComplete(object sender, RegisterCompleteEventArgs e)
    {
        try
        {
            string registryKey = @"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce";
            RegistryKey key32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
            RegistryKey key = key32.OpenSubKey(registryKey, true);
            if (key != null)
            {
                var names = key.GetValueNames();
                for (int i = 0; i < names.Length; i++)
                {
                    var value = key.GetValue(names[i]);
                    if (value.ToString().Contains("NameInstaller.exe"))
                        key.DeleteValue(names[i]);
                }
                key.Close();
            }
        }
        catch (Exception ex)
        {
        }
    }