问题标签 [windows-restart-manager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何将布尔值作为 WinDef.LRESULT 返回?
我正在尝试在我的 Java 程序上实现 Windows重新启动管理器,然后我收到了来自 Windows 的消息并执行如下所示的回调:
WindowProc
看起来像这样:
重新启动管理器通过发送将 lParam 参数设置为 ENDSESSION_CLOSEAPP (0x1) 的 WM_QUERYENDSESSION 通知来查询 GUI 应用程序是否关闭。[...] GUI 应用程序应监听 WM_QUERYENDSESSION 消息,如果应用程序准备关闭并重新启动,则返回 TRUE 值。[...]
true
当返回值为 a 时,我如何实际返回WinDef.LRESULT
?我认为它是一个指针,不知何故我需要构造一个 Win32 布尔值并返回一个指向它的指针?
windows - 如何捕获哪些 dll 导致服务器意外重启
我有一个 Windows Server 2012 R2。当我安装 msi 时,Windows 安装程序会提示我系统将在 60 秒后重新启动。我怎样才能捕捉到哪些 dll 正在强制机器重新启动?或者我们如何在文件夹级别提供句柄以了解哪些 dll 是强制重启的罪魁祸首?
我试过这个Get-EventLog -Logname System -Newest 1 -Source “USER32” | Format-List
这仅输出有关进程、时间、用户名等的信息。我想知道问题背后的特定 dll 名称。我怎样才能做到这一点?
在此先感谢您的帮助!
wix - 为 Wix 安装程序部分本地化重新启动管理器对话框
我们有一个产品的旧版 InstallShield 安装程序,我们正在将该产品移植到 wix 安装程序。
我仅在 ARP 卸载期间观察到重新启动管理器对话框中的本地化不当行为,其中只有描述部分正在本地化,而单选按钮下方的文本未本地化。最后截图。
但是在 InstallShield 安装程序中它是正确的。对于这种不一致的行为,我无法追踪我的 wix 安装程序中缺少的内容。
我尝试检查此重新启动管理器对话框本地化字符串是否来自 Wix 或操作系统。
我尝试检查此对话框字符串是否在 InstallShield 安装程序的字符串表中可用,但找不到。Wix 中的 WixUI_en-us.wxl 中都没有。
所以我的理解是这个对话框来自操作系统,但问题是为什么它只部分本地化。
我在我的安装程序中自定义了“WixUI_InstallDir”,如下所示。
所以我在 WixUI_InstallDir1 中包含了下面的 MsiRMFilesInUse 对话框。
通过包含此内容,“正在使用的文件”对话框可见并在从 MSI 卸载时进行本地化,但从 ARP 卸载时重新启动管理器部分本地化。
我希望重新启动管理器对话框完全本地化,但下面的单选按钮文本没有本地化。下面附上截图。
winapi - 在什么情况下 RmGetList 为 lpdwRebootReasons 输出参数返回 2?
背景
我正在设计一个 Inno Setup 安装程序来安装Cygwin服务,我对从 Windows重新启动管理器API 看到的行为感到困惑。
具体来说,当服务正在运行(使用cygrunsrv
实用程序启动)时,RmGetList API 函数RmRebootReasonSessionMismatch
为其lpdwRebootReasons
输出参数返回 2 ( )。这个输出参数是一个类型的枚举,RM_REBOOT_REASON
MSDN上对该RmRebootReasonSessionMismatch
值的描述是:
Inno Setup 日志文件包含如下行:
Inno Setup 然后继续尝试替换正在使用的文件,就好像根本没有使用 Restart Manager。
我对这个输出值感到困惑,因为在我测试的两台不同的机器上(Windows 10 1909 x64 和 Windows Server 2012 R2),没有终端服务器/远程桌面用户登录。
如果我停止服务并启动另一个可执行文件(在要被安装程序替换的文件集中),RmGetList 返回 0 ( RmRebootReasonNone
) lpdwRebootReasons
,Inno Setup 显示正在使用的文件的正常对话框并允许用户选择自动关闭它们。
Process Explorercygrunsrv.exe
显示在会话 0 和System
完整性级别中运行的两个进程(及其启动的进程)。两者都是控制台子系统可执行文件。
问题
RmGetList 在什么条件下
RmRebootReasonSessionMismatch
为其lpdwRebootReasons
输出参数返回 2 ( )?(我试图理解为什么在服务运行时会发生这种情况。)此值是否会导致整个 Restart Manager 会话失败,或者即使 Restart Manager 认为应用程序正在一个或多个不同的会话中运行,它是否可以继续?
inno-setup - How do you close then restart explorer.exe in Inno Setup uninstall using the Restart Manager?
Does anyone know of a sample or can provide a sample of how to use the Restart Manager built-in to Windows to close explorer.exe at the beginning of the uninstall process of Inno Setup then restarting it just after files removed ? I have some shell items that even after unregistered is still allocated and can't be removed until explorer.exe is closed.
TIA!!
c++ - 为所有进程刷新系统环境变量而无需在 C++ 中注销/重新启动
我正在用 C++ 编写一个程序,它将一个新目录添加到系统的路径环境变量中。该目录已成功添加该RegSetValueEx()
功能,但更改并未反映在所有进程中。
我已经尝试过BroadcastSystemMessage()
,并且SendMessageTimeout()
功能如下
和
但是它们都不起作用,但是当我重新启动系统时,更改就会反映出来。
我想要的是
我希望在没有注销的情况下反映所有进程的更改,并且几天前我安装了一个软件(Composer https://getcomposer.org),它添加了它的环境路径并刷新了所有进程的环境变量,而不需要系统重启。
这是我已经查看过的一些有用的链接