gpt4 book ai didi

powershell - 停止进程 vs TaskKill

转载 作者:行者123 更新时间:2023-12-03 00:21:18 24 4
gpt4 key购买 nike

我正在自动刷新图标缓存,我发现 TaskKill 之间存在有趣的差异和 Stop-Process .一般来说,我更喜欢使用本地 PowerShell,而不是从 PowerShell 启动的 DOS 命令行内容,所以我宁愿使用 Stop-Process -name:explorerStart-Process TaskKill "/f /im explorer.exe" -NoNewWindow停止 Explorer.exe,以便 DB 文件不再“使用”并可被删除。
但是,前者允许Explorer.exe立即重启,所以我需要删除的图标DB文件还在使用中,我无法删除它们。后者真正杀死了 Explorer.exe,我稍后必须使用 Start-Process。有没有办法使用 Stop-Process 来获得 TaskKill 行为,或者这是一种罕见的情况,旧学校的杂乱也是唯一有效的方法?

最佳答案

我做了一些研究,你最好通过发送消息来结束浏览器。

使用此 WM_EXITEXPLORER (1460) 的消息,您可以告诉资源管理器关闭。

这里我的代码适用于 Windows 10:

$code = @'
[DllImport("user32.dll", EntryPoint = "PostMessage", CharSet = CharSet.Unicode)] public static extern IntPtr PostMessage(IntPtr hWnd, int Msg, uint wParam, string lParam);
[DllImport("user32.dll", EntryPoint = "FindWindowW", CharSet = CharSet.Unicode)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
'@
$myAPI = Add-Type -MemberDefinition $code -Name myAPI -PassThru
$myAPI::PostMessage($myAPI::FindWindow("Shell_TrayWnd", $Null),1460,0,0)

Start-Sleep -Seconds 10

最好等待资源管理器窗口关闭,也许我明天会添加。现在 10 秒的等待应该足以让 explorer.exe 优雅地结束。

这完全比使用杀戮要好!

关于powershell - 停止进程 vs TaskKill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com