为什么'msg * alarm'过一会就消失了?

Why does 'msg * alarm' disappear after a while?

我有一个小的 powershell 脚本,可以让我快速为自己设置闹钟。它基本上只是等待指定的分钟数,然后调用

msg * alarm!

这很有效 - 弹出一个消息框。唯一的问题是它会在一段时间后消失 - 所以如果我不在办公桌前,我就会错过消息框。

根据文档,found here,这是我未指定时间值时的行为。

/time: seconds : Specifies the amount of time the message you sent is displayed on the user's screen. Once the time limit is reached, the message disappears. If no time limit is set, the message remains on the user's screen until the user sees the message and clicks OK.

然而事实并非如此,它确实消失了。现在,我必须指定一个任意高的数字才能保留。

    msg * /time:999999 alarm!

在启动 msg.exe 并向其传递最大超时值 999999 时,使用 cdb 跟踪调用显示了以下感兴趣的函数:

command: msg * /time:999999 alarm

f423f (999999) 的超时值通过 rax 寄存器传递给 ShowMessageBox

WINSTA!WinStationSendMessageW+0x353:
000007fe`fbf1ec93 e874deffff      
call    WINSTA!CSmartSession::ShowMessageBox (000007fe`fbf1cb0c)
rax=00000000000f423f rbx=0000000000000000 rcx=0000000000000010

在没有任何超时值的情况下启动 msg.exe 显示 3c (60) 正在传递给 ShowMessageBox 函数。

command: msg * alarm

WINSTA!WinStationSendMessageW+0x353:
000007fe`fbf1ec93 e874deffff      
call    WINSTA!CSmartSession::ShowMessageBox (000007fe`fbf1cb0c)
rax=000000000000003c rbx=0000000000000000 rcx=0000000000000010

我的猜测是文档不是最新的(如果曾经是)