吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4015|回复: 38
收起左侧

[Python 原创] 解除微信接收文件只读并持续监听解除只读

[复制链接]
永恒陌 发表于 2023-4-25 11:32
本帖最后由 永恒陌 于 2023-4-25 14:23 编辑

又让chatgpt优化了一下,这回cpu占用率下去了,到0了,之前我这高达12的占用率
-----------前一阵发现微信接收到的文件默认变成了只读,十分离谱。
让chatgpt给搞一下,下边代码都是chatgpt生成的:
功能是通过注册表获取”Documents“位置,我的电脑是修改过文档位置的。所以获取用户目录的话下边是不存在的,所以通过注册表获取。应该是需要管理员权限。
然后获取wxid开头的所有文件夹中的接收文件的文件夹及其子文件夹。
遍历解除
持续监听,持续监听时发现微信会在文件落地后重命名,所以监听的是文件移动事件,重命名本质上是文件移动。我怕它比微信下手快。所以延迟0.1s修改
想挂后台的就自个搞一下吧。


记得先安装watchdog


over!
----新-----
[Python] 纯文本查看 复制代码
import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

# 获取用户文档路径
import winreg

# 定义 Documents 文件夹的注册表键路径
documents_folder_key_path = r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"

# 打开 Documents 文件夹的注册表键
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, documents_folder_key_path) as key:
    # 读取 Documents 文件夹的值
    user_documents_path, _ = winreg.QueryValueEx(key, "Personal")

user_documents_path = user_documents_path + "\\WeChat Files"
# 输出 Documents 文件夹的位置
print("Documents 文件夹位置:", user_documents_path)

# 获取子文件夹下所有以 "wxid" 开头的文件夹中的 "FileStorage\File" 文件夹
parent_folder = user_documents_path  # 根据需求设置父文件夹路径
target_folders = []
for dirpath, dirnames, filenames in os.walk(parent_folder):
    for dirname in dirnames:
        if dirname.startswith('wxid'):
            target_folder = os.path.join(dirpath, dirname, 'FileStorage\\File')
            if os.path.exists(target_folder):
                target_folders.append(target_folder)
print('目标文件夹列表:', target_folders)

# 解除目标文件夹及其子文件夹下所有文件的只读状态
for target_folder in target_folders:
    for dirpath, dirnames, filenames in os.walk(target_folder):
        for filename in filenames:
            file_path = os.path.join(dirpath, filename)
            os.chmod(file_path, 0o777)  # 解除文件只读状态
            print('解除只读状态:', file_path)


# 监听目标文件夹及其子文件夹下新增文件,并解除只读状态
class FileEventHandler(FileSystemEventHandler):
    def on_moved(self, event):
        if event.is_directory:
            return
        time.sleep(0.1)
        file_path = event.dest_path
        os.chmod(file_path, 0o777)  # 解除新增文件的只读状态
        print('解除新增文件只读状态:', file_path)


event_handler = FileEventHandler()
observer = Observer()
for target_folder in target_folders:
    observer.schedule(event_handler, path=target_folder, recursive=True)
observer.start()

print('开始监听文件夹...')

# 程序保持运行状态,等待事件的发生
try:
    while observer.is_alive():
        observer.join(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()



----旧-----
[Python] 纯文本查看 复制代码
import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

# 获取用户文档路径
import winreg

# 定义 Documents 文件夹的注册表键路径
documents_folder_key_path = r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"

# 打开 Documents 文件夹的注册表键
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, documents_folder_key_path) as key:
    # 读取 Documents 文件夹的值
    user_documents_path, _ = winreg.QueryValueEx(key, "Personal")

user_documents_path = user_documents_path + "\\WeChat Files"
# 输出 Documents 文件夹的位置
print("Documents 文件夹位置:", user_documents_path)

# 获取子文件夹下所有以 "wxid" 开头的文件夹中的 "FileStorage\File" 文件夹
parent_folder = user_documents_path  # 根据需求设置父文件夹路径
target_folders = []
for dirpath, dirnames, filenames in os.walk(parent_folder):
    for dirname in dirnames:
        if dirname.startswith('wxid'):
            target_folder = os.path.join(dirpath, dirname, 'FileStorage\\File')
            if os.path.exists(target_folder):
                target_folders.append(target_folder)
print('目标文件夹列表:', target_folders)

# 解除目标文件夹及其子文件夹下所有文件的只读状态
for target_folder in target_folders:
    for dirpath, dirnames, filenames in os.walk(target_folder):
        for filename in filenames:
            file_path = os.path.join(dirpath, filename)
            os.chmod(file_path, 0o777)  # 解除文件只读状态
            print('解除只读状态:', file_path)


# 监听目标文件夹及其子文件夹下新增文件,并解除只读状态
class FileEventHandler(FileSystemEventHandler):
    def on_moved(self, event):
        if event.is_directory:
            return
        time.sleep(0.1)
        file_path = event.dest_path
        os.chmod(file_path, 0o777)  # 解除新增文件的只读状态
        print('解除新增文件只读状态:', file_path)


event_handler = FileEventHandler()
observer = Observer()
for target_folder in target_folders:
    observer.schedule(event_handler, path=target_folder, recursive=True)
observer.start()

print('开始监听文件夹...')

# 程序保持运行状态,等待事件的发生
try:
    while True:
        pass
except KeyboardInterrupt:
    observer.stop()
observer.join()

免费评分

参与人数 3吾爱币 +8 热心值 +2 收起 理由
吾恋兮不知 + 1 热心回复!
抱歉、 + 1 谢谢@Thanks!
wushaominkk + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lsjmq 发表于 2023-4-25 11:41
重点是chatgpt生成的
lj76560670 发表于 2023-5-12 13:29
我根据这个代码打包了下。需要的可以下https://cloud.189.cn/web/share?code=rUvmE3UrI7be(访问码:zyz9)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
行者行着 + 1 + 1 热心回复!

查看全部评分

摇裤儿 发表于 2023-4-25 11:35
lyie15 发表于 2023-4-25 11:36
这个烦恼最近也遇上了,一开始还以为是中毒了呢
 楼主| 永恒陌 发表于 2023-4-25 11:37
lyie15 发表于 2023-4-25 11:36
这个烦恼最近也遇上了,一开始还以为是中毒了呢

谁说不是呢。这玩意太离谱了。它都存在有半年了应该。才发现不久。
lyie15 发表于 2023-4-25 11:39
是有两个月了,主要是我发EXCEL表给别人,他们编辑后,只能另存,一开始还说我中毒了
HZB586 发表于 2023-4-25 11:52
右键属性取消只读不就好了?
 楼主| 永恒陌 发表于 2023-4-25 12:01
HZB586 发表于 2023-4-25 11:52
右键属性取消只读不就好了?

你这么说让我觉得你手机里有某一款开放世界游戏。
Aaron-x 发表于 2023-4-25 12:01
手工改属性后每次更新好像还会变成只读
image.png
 楼主| 永恒陌 发表于 2023-4-25 12:02
Aaron-x 发表于 2023-4-25 12:01
手工改属性后每次更新好像还会变成只读

微信收的新文件都是只读的。所以才会这样。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 12:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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