注销时终止进程的脚本不会执行,直到进程死亡?

我们有一个程序,由于内存泄漏在一些屏幕上,当用户退出时不会干净地退出。 问题是,这阻止了正常的注销过程 – 您select注销并且一些进程消失,但用户实际上不注销。

由于我无法修复这个程序,所以我想我会在注销时使用一个脚本来杀死这个进程。 如果我通过双击运行脚本并将脚本添加到Windows设置 – >脚本 – >在gpedit中的我的计算机上注销,我已validation脚本会杀死进程。

不幸的是,似乎退出脚本不会运行,直到所有的进程已经死亡,所以它永远不会运行。

有没有办法让注销脚本在stream程的早期点运行? 还是有更好的方法来解决这个问题?

    你有没有尝试在HKEY_CURRENT_USER \控制面板\桌面AutoEndTasks设置为1的registry设置? 如果这样做,你将不需要脚本。

    您可以使用程序注销,例如在注销之前运行脚本的http://www.karenware.com/powertools/ptstopper.asp

    将此添加到脚本的末尾

    Set strComputer = "." Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//" & strComputer & "/root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true") for each OpSys in OpSysSet OpSys.Win32Shutdown 0 next WScript.Quit(0) 

    让他们使用这个脚本而不是正常的注销。

    我目前不知道如何使它在进程退出之前运行脚本,但可以继续看看,如果这不起作用。 另外,我没有得到testing的机会,但是这应该是命令的正确语法。 让我知道如果它需要一些调整。

    也许试试微软的UPHClean服务。 注意这只能在2000/2003 / XP上运行http://www.microsoft.com/downloads/details.aspx?familyid=1b286e6d-8912-4e18-b570-42470e2f3582&displaylang=en

    我认为,有一点很有趣,那就是用户在注销时从未完全注销,因此您编写了一个脚本,指出“在注销时终止此进程”,但脚本无法运行,因为用户永远不会注销。 您希望脚本在用户点击“注销”时启动,而不是在用户注销完成时启动。

    我不是非常了解VBScript甚至退出后的Windows API,但我会build议以下之一:

    • 了解当用户select“注销”时是否存在单独的事件/触发器,并且在那个时刻触发脚本。 如果说这样做容易,那么我表示歉意,但它似乎是最明显的方式来实现你的想法。

    • 找出是否有一个过程,肯定退出后,用户select注销( explorer.exe也许?)。 如果你试图杀死的进程不是系统关键或会话关键的话(或者你的kill脚本与IS系统关键的关系),那么你就不会希望脚本杀死该过程仅仅是因为用户closures了托盘中的东西。

    • 我认为有一个注销脚本的想法是相当不错的,但我会build议找出,如果你实际上可以用启动这个脚本的button取代开始菜单上的“注销”button。 我知道我在电脑实验室看到过类似的东西。 但是如果你依靠用户记住点击桌面上的自定义“注销”button,他们仍然可以正常注销,肌肉记忆只会让每个人都感到沮丧。