.pyw文件未通过pythonw.exe运行反而打开Visual Studio的问题排查
解决.pyw文件默认打开异常与hosts访问配置问题
看起来你遇到了两个关联的小问题:.pyw文件的默认打开程序被意外劫持到Visual Studio,还有任务计划中高权限运行脚本的配置细节需要确认。我给你分点梳理排查和解决步骤:
一、修复.pyw文件默认打开程序被劫持的问题
- 手动重置文件关联:右键你的.pyw文件,选择「打开方式」→「选择另一个应用」,找到
pythonw.exe(一般在你的Python安装目录下,比如C:\Python3.x\pythonw.exe),勾选「始终使用此应用打开.pyw文件」后确认。如果找不到pythonw.exe,直接浏览到Python安装目录手动选择。 - 检查注册表关联(进阶):如果上面的方法没用,打开注册表编辑器(运行
regedit),依次导航到:HKEY_CLASSES_ROOT\.pyw,确认默认值是Python.NoConFile;
再进入HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command,确保默认值是指向pythonw.exe的正确命令,比如:
如果这里被改成了Visual Studio的启动路径,手动修改回来即可。"C:\Python39\pythonw.exe" "%1" %*
二、确保任务计划中脚本正确高权限运行
- 补全hosts文件路径:你的代码里
hosts_path写的是C:\Windows\System32\drivers\etc\h...,必须补全为完整路径C:\Windows\System32\drivers\etc\hosts,否则脚本会找不到目标文件。 - 修正任务计划的启动配置:在任务计划程序的任务「操作」选项卡中,「程序或脚本」要直接填写
pythonw.exe的完整路径,「添加参数」里填入你的.pyw文件的完整路径(比如"C:\Users\letto4135\Desktop\python_programs\web_block\your_script.pyw")。不要直接把.pyw文件设为「程序或脚本」,否则会调用被劫持的默认打开程序(VS)。 - 确认权限与兼容性:除了勾选「以最高权限运行」,还要确保任务的「配置为」选项选择了你的Windows版本(比如Windows 10/11),避免权限兼容性问题。
修正后的代码片段参考
import time from datetime import datetime as dt # Temporary hosts path to test hosts_temp = r"C:\Users\letto4135\Desktop\python_programs\web_block\hosts" # Hosts path in windows (补全完整路径) hosts_path = r'C:\Windows\System32\drivers\etc\hosts' # 示例:读取hosts文件(写入需要高权限) with open(hosts_path, 'r') as f: current_content = f.read() print(current_content)
内容的提问来源于stack exchange,提问作者letto4135
相关产品推荐
相关产品推荐

