You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中启动MRT.exe?程序崩溃及延迟启动问题求助

问题分析与解决办法

1. 修复"value is either too large or too small for int32"崩溃问题

这个错误源于两处代码问题:

  • 错误的类定义语法:你使用了class Program[executable_app](...)这种不符合Python规范的写法,类继承必须用圆括号,且不需要这类自定义泛型声明。同时type App = customtkinter.CTk()是错误的类型别名定义(类型别名不应实例化),直接删除这些冗余代码即可。
  • 实例方法误用functools.cache:functools.cache会尝试缓存实例对象(self),但GUI实例不可哈希,会导致内部类型转换时触发整数溢出错误。直接移除这些方法上的@functools.cache装饰器——启动MRT的方法不需要缓存。

修改后的核心代码片段:

# 移除错误的类型别名和executable_app定义
class Program(customtkinter.CTk, My_First_Aid_Kit_interface.My_First_Aid_Kit_interface):
    # 类常量保持不变
    
    @typing.override
    def __interactive_mode__(self) -> None:
        subprocess.Popen(["C:\\Windows\\Sysnative\\mrt.exe"], creationflags=subprocess.CREATE_NEW_CONSOLE)
    
    @typing.override
    def __full_scan__(self) -> None:
        subprocess.Popen(["C:\\Windows\\Sysnative\\mrt.exe", "/F"], creationflags=subprocess.CREATE_NEW_CONSOLE)
    
    @typing.override
    def __full_scan_with_virus_removal__(self) -> None:
        subprocess.Popen(["C:\\Windows\\Sysnative\\mrt.exe", "/F:Y"], creationflags=subprocess.CREATE_NEW_CONSOLE)

2. 解决MRT.exe需等待程序关闭才出现的问题

这是因为subprocess.run/subprocess.call默认是阻塞调用,会卡住GUI主线程,导致MRT无法正常启动显示。解决要点:

  • 用subprocess.Popen替代run/call,它会启动新进程而不阻塞主线程。
  • 若使用32位Python,必须用C:\\Windows\\Sysnative\\mrt.exe路径——Windows会将32位程序对System32的访问重定向到SysWOW64,而MRT.exe是64位程序。
  • 添加creationflags=subprocess.CREATE_NEW_CONSOLE,确保MRT在独立窗口启动,不受GUI进程阻塞。
  • 带参数的调用必须拆分程序名和参数为列表元素,比如["mrt.exe", "/F"],而非["mrt.exe /F"](后者会被当作不存在的程序名)。

额外小问题修复

你重复定义了self.main_screen_full_scan_with_virus_removal_button变量,最后一个"подешавања"按钮应重新命名,避免覆盖之前的按钮引用:

self.main_screen_settings_button: customtkinter.CTkButton = customtkinter.CTkButton(master=self, text="подешавања", height=25, width=75, font=self.font_for_widgets, fg_color="green")
self.main_screen_settings_button.place(x=1, y=190)

内容的提问来源于stack exchange,提问作者Anonymous6598

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:18:13