设为首页收藏本站

 找回密码
 立即注册

只需一步,快速开始

搜索
查看: 184|回复: 18

[实用软件] 百度网盘“智能看图”功能卸载工具"

 火.. [复制链接]
累计签到:30 天
连续签到:1 天
灌水成绩
11
61
4361
主题
帖子
积分

等级头衔

ID : 630

助理工程师

积分成就 测量币 : 4361
在线时间 : 0 小时
注册时间 : 2025-10-23
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-4-16 22:51:27 | 显示全部楼层 |阅读模式 IP:北京
[Python] 纯文本查看 复制代码import tkinter as tkfrom tkinter import ttk, messagebox, scrolledtextimport osimport subprocessimport sysimport ctypesclass UninstallerApp:    def __init__(self, root):        self.root = root        self.root.title("百度网盘“智能看图”功能卸载工具")        self.root.geometry("650x550")        self.root.resizable(True, True)        # 设置中文字体        self.style = ttk.Style()        self.style.configure("TLabel", font=("SimHei", 10))        self.style.configure("TButton", font=("SimHei", 10))        # 创建界面组件        self.create_widgets()        # 检查是否以管理员身份运行        self.check_admin()    def create_widgets(self):        # 主框架        main_frame = ttk.Frame(self.root, padding=20)        main_frame.pack(fill=tk.BOTH, expand=True)        # 标题        title_label = ttk.Label(            main_frame,            text="百度网盘“智能看图”功能卸载工具",            font=("SimHei", 14, "bold")        )        title_label.pack(pady=(0, 20))        # 说明文本        info_text = """此工具将删除百度网盘捆绑的“智能看图”软件请确保以管理员身份运行此程序以保证卸载效果卸载内容包括:1. 相关注册表项2. 程序安装目录文件"""        info_label = ttk.Label(main_frame, text=info_text, justify=tk.LEFT)        info_label.pack(anchor=tk.W, pady=(0, 20))        # 操作按钮区域        button_frame = ttk.LabelFrame(main_frame, text="操作选择")        button_frame.pack(fill=tk.X, pady=(0, 20))        # 按钮容器        btn_container = ttk.Frame(button_frame)        btn_container.pack(pady=10, padx=10, fill=tk.X)        # 完整卸载按钮        self.uninstall_btn = ttk.Button(            btn_container,            text="开始完整卸载",            command=self.start_full_uninstall        )        self.uninstall_btn.pack(side=tk.LEFT, padx=(0, 10))        # 单独删除注册表按钮        self.delete_reg_btn = ttk.Button(            btn_container,            text="仅删除注册表项",            command=self.delete_registry_keys        )        self.delete_reg_btn.pack(side=tk.LEFT, padx=(0, 10))        # 单独删除程序文件按钮        self.delete_files_btn = ttk.Button(            btn_container,            text="仅删除程序文件",            command=self.delete_program_files        )        self.delete_files_btn.pack(side=tk.LEFT)        # 日志区域        log_frame = ttk.LabelFrame(main_frame, text="操作日志")        log_frame.pack(fill=tk.BOTH, expand=True, pady=(0, 20))        self.log_text = scrolledtext.ScrolledText(            log_frame,            wrap=tk.WORD,            font=("SimHei", 10)        )        self.log_text.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)        self.log_text.config(state=tk.DISABLED)        # 退出按钮        exit_btn = ttk.Button(            main_frame,            text="退出",            command=self.root.quit        )        exit_btn.pack(side=tk.RIGHT)    def log(self, message):        """向日志区域添加信息"""        self.log_text.config(state=tk.NORMAL)        self.log_text.insert(tk.END, message + "\n")        self.log_text.see(tk.END)        self.log_text.config(state=tk.DISABLED)        self.root.update_idletasks()    def check_admin(self):        """检查是否以管理员身份运行"""        try:            is_admin = (os.getuid() == 0)        except AttributeError:            is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0        if not is_admin:            self.log("警告:程序未以管理员身份运行,可能导致卸载不完整!")            self.log("建议关闭程序,右键选择“以管理员身份运行”")        else:            self.log("已确认管理员权限,可正常卸载")    def run_reg_command(self, command):        """执行注册表命令"""        try:            result = subprocess.run(                command,                shell=True,                check=True,                stdout=subprocess.PIPE,                stderr=subprocess.PIPE,                text=True            )            return True, result.stdout        except subprocess.CalledProcessError as e:            return False, e.stderr    def delete_registry_keys(self):        """删除相关注册表项"""        # 禁用按钮防止重复操作        self._disable_buttons()        self.log("\n==========================================")        self.log("开始删除注册表项...")        # 注册表项列表        reg_keys = [            ("HKEY_CLASSES_ROOT\\BaiduNetdiskImageViewerAssociations", "删除 [1/3]"),            ("HKEY_CURRENT_USER\\Software\\Baidu\\BaiduNetdiskImageViewer", "删除 [2/3]")        ]        # 删除注册表项        for key, msg in reg_keys:            self.log(f"{msg} {key}")            success, _ = self.run_reg_command(f'reg delete "{key}" /f >nul 2>&1')            if success:                self.log("   ✅ 删除成功")            else:                self.log("   ❌ 删除失败或项目不存在")        # 删除特定值        self.log("删除 [3/3] HKEY_CURRENT_USER\\Software\\RegisteredApplications 中的 BaiduNetdiskImageViewer")        success, _ = self.run_reg_command(            'reg delete "HKEY_CURRENT_USER\\Software\\RegisteredApplications" /v "BaiduNetdiskImageViewer" /f >nul 2>&1'        )        if success:            self.log("   ✅ 删除成功")        else:            self.log("   ❌ 删除失败或项目不存在")        self.log("注册表项删除操作完成")        self.log("==========================================\n")        # 恢复按钮状态        self._enable_buttons()    def delete_program_files(self):        """删除程序文件目录"""        # 禁用按钮防止重复操作        self._disable_buttons()        self.log("\n==========================================")        self.log("开始删除程序文件...")        # 程序路径        appdata = os.getenv('APPDATA')        imageviewer_path = os.path.join(appdata, 'baidu', 'BaiduNetdisk', 'module', 'ImageViewer')        if os.path.exists(imageviewer_path):            self.log(f"找到程序目录: {imageviewer_path}")            self.log("正在删除程序文件...")            try:                # 尝试删除目录                if os.path.isdir(imageviewer_path):                    # 使用rmdir命令删除目录                    result = subprocess.run(                        f'rmdir /s /q "{imageviewer_path}"',                        shell=True,                        stdout=subprocess.PIPE,                        stderr=subprocess.PIPE,                        text=True                    )                    if result.returncode == 0:                        self.log("   ✅ 程序文件删除成功")                    else:                        self.log("   ❌ 程序文件删除失败,可能文件正在使用中")                        self.log(f"   请手动删除: {imageviewer_path}")            except Exception as e:                self.log(f"   ❌ 删除时发生错误: {str(e)}")                self.log(f"   请手动删除: {imageviewer_path}")        else:            self.log("   程序目录不存在或已被删除")        self.log("程序文件删除操作完成")        self.log("==========================================\n")        # 恢复按钮状态        self._enable_buttons()    def start_full_uninstall(self):        """开始完整卸载流程"""        # 禁用按钮防止重复操作        self._disable_buttons()        try:            self.log("==========================================")            self.log("开始完整卸载流程...")            # 先删除注册表            self.delete_registry_keys()            # 再删除程序文件            self.delete_program_files()            # 完成信息            self.log("\n==========================================")            self.log("完整卸载完成!")            self.log("==========================================")            self.log("\n建议重启计算机以确保所有更改生效")            appdata = os.getenv('APPDATA')            self.log(f"如果问题仍然存在,请检查以下路径是否还有残留文件:")            self.log(f"{appdata}\\baidu\\BaiduNetdisk\\module\\ImageViewer")            messagebox.showinfo("完成", "卸载已完成!建议重启计算机以确保所有更改生效。")        except Exception as e:            self.log(f"\n发生错误: {str(e)}")            messagebox.showerror("错误", f"卸载过程中发生错误: {str(e)}")        finally:            # 恢复按钮状态            self._enable_buttons()    def _disable_buttons(self):        """禁用所有操作按钮"""        self.uninstall_btn.config(state=tk.DISABLED)        self.delete_reg_btn.config(state=tk.DISABLED)        self.delete_files_btn.config(state=tk.DISABLED)    def _enable_buttons(self):        """启用所有操作按钮"""        self.uninstall_btn.config(state=tk.NORMAL)        self.delete_reg_btn.config(state=tk.NORMAL)        self.delete_files_btn.config(state=tk.NORMAL)if __name__ == "__main__":    # 检查是否以管理员身份运行,如果不是则尝试重启    try:        is_admin = (os.getuid() == 0)    except AttributeError:        is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0    if not is_admin:        # 尝试以管理员身份重启程序        ctypes.windll.shell32.ShellExecuteW(            None, "runas", sys.executable, " ".join(sys.argv), None, 1        )        sys.exit()    root = tk.Tk()    app = UninstallerApp(root)    root.mainloop()




https://wwux.lanzouu.com/i1jka37jopih
密码:d4vb


累计签到:56 天
连续签到:43 天
灌水成绩
4
227
15400
主题
帖子
积分

等级头衔

ID : 514

中级工程师

积分成就 测量币 : 15400
在线时间 : 516 小时
注册时间 : 2026-3-27
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-4-30 01:18:22 | 显示全部楼层 IP:美国
图文搭配很好,理解更快。
回复

使用道具 举报

累计签到:56 天
连续签到:47 天
灌水成绩
2
207
13471
主题
帖子
积分

等级头衔

ID : 569

中级工程师

积分成就 测量币 : 13471
在线时间 : 530 小时
注册时间 : 2026-2-10
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-4-30 22:28:22 | 显示全部楼层 IP:北美地区
讲解通俗易懂,不搞玄学。
回复

使用道具 举报

累计签到:61 天
连续签到:50 天
灌水成绩
4
232
14838
主题
帖子
积分

等级头衔

ID : 572

中级工程师

积分成就 测量币 : 14838
在线时间 : 531 小时
注册时间 : 2025-10-2
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:19:47 | 显示全部楼层 IP:广东东莞
对面试复习也很有帮助。
回复

使用道具 举报

累计签到:61 天
连续签到:47 天
灌水成绩
2
213
14132
主题
帖子
积分

等级头衔

ID : 538

中级工程师

积分成就 测量币 : 14132
在线时间 : 526 小时
注册时间 : 2026-2-26
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:41:59 | 显示全部楼层 IP:广东东莞
适合自学,不用再到处找资料。
回复

使用道具 举报

累计签到:57 天
连续签到:47 天
灌水成绩
2
224
14478
主题
帖子
积分

等级头衔

ID : 553

中级工程师

积分成就 测量币 : 14478
在线时间 : 530 小时
注册时间 : 2025-10-4
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:41:59 | 显示全部楼层 IP:广东东莞
思路很清晰,逻辑很顺。
回复

使用道具 举报

累计签到:58 天
连续签到:44 天
灌水成绩
3
189
11435
主题
帖子
积分

等级头衔

ID : 513

中级工程师

积分成就 测量币 : 11435
在线时间 : 519 小时
注册时间 : 2026-1-25
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:41:59 | 显示全部楼层 IP:广东东莞
案例很贴近实际,很有参考价值。
回复

使用道具 举报

累计签到:59 天
连续签到:40 天
灌水成绩
4
241
16525
主题
帖子
积分

等级头衔

ID : 535

中级工程师

积分成就 测量币 : 16525
在线时间 : 527 小时
注册时间 : 2026-2-19
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:43:51 | 显示全部楼层 IP:广东东莞
逻辑很清晰,一步步跟着走就行。
回复

使用道具 举报

累计签到:60 天
连续签到:41 天
灌水成绩
2
209
14287
主题
帖子
积分

等级头衔

ID : 541

中级工程师

积分成就 测量币 : 14287
在线时间 : 526 小时
注册时间 : 2026-2-4
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:43:51 | 显示全部楼层 IP:广东东莞
内容质量很高,比很多视频讲得好。
回复

使用道具 举报

累计签到:63 天
连续签到:44 天
灌水成绩
2
212
14232
主题
帖子
积分

等级头衔

ID : 527

中级工程师

积分成就 测量币 : 14232
在线时间 : 524 小时
注册时间 : 2026-1-29
最后登录 : 2026-7-5

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:43:51 | 显示全部楼层 IP:广东东莞
没有废话,全是重点。
回复

使用道具 举报

快速回复换一批
遇见神贴岂能不顶
太及时了! 感谢楼主无私分享,正需要这个资料,赞一个! 👍✨
马克一下(MK)。字字珠玑,容我回去消化一下再来交作业。 🧠🧐
学到了! 请问楼主,这个方法在实际操作中有什么需要特别注意的坑吗? 🧐❓
博大精深。 关注楼主了,以后这类硬核文章请务必多发一些! 🔔❤️
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|精密测量技术论坛 ( 桂ICP备2026007449号-1 )

GMT+8, 2026-7-5 15:01 , Processed in 0.435726 second(s), 52 queries .

Powered by 精密测量技术论坛

© 2025-2026 联系站长

快速回复 返回顶部 返回列表