1 Star 6 Fork 1

边城/code-for-articles

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

Make WeChat Received Files Writable

这个工具利用 .NET 库提供的 FileSystemWatcher 类 (System.IO) 监听微信的接收文件目录,如果有新产生的只读文件,则去掉其只读属性。

Deprecated 不赞成下载成品

微信 3.9.6 添加了一个「以只读的方式打开聊天中的文件」选项(设置→文件管理→文件设置)来满足部分需要以可写方式打开聊天文件的需求。所以本示例代码开发出来工具已经不具实际使用的意义。但是作为示例代码,结合博客,仍然是个不错的学习案例。

需要工具可以直接去下载页:WxFilesWritable Ver 1.0.5

相关文章


Windows 版微信升级到 3.9 之后,接收到的文件都变成了只读属性,对需要经常修改微信接收文件进行交流的人来说极为不变。虽然从业务功能上来说,需要频繁交流的文档还是用在线协同(比如腾讯文档)比较好一些,但从技术的角度来看,应该如何解决这个问题呢?

其实很多技术栈都提供了监听系统文件变化的 API,比如 .NET 就在其 System.IO 命名空间下提供了 FileSystemWatcher 类用于监听文件的变化,包括创建文件、删除文件、文件改名/移动、文件属性变化等。所以可以使用 C# 和 .NET 快速的写一个程序用来监听指定文件夹下的新建文件,如果新创建的文件属性是只读,则去掉其只读属性。

第一步,找到微信接收文件的目录。

在微信的「设置→文件管理」中就可以找到,比如 C:\Users\James\Documents\WeChat Files。然后需要识别这个目录下的用户目录,一般是微信号。点击微信窗口上自己的头像就可以看到。用户目录下的 FileStorage\File 目录就是我们的目标目录了。

为了帮助用户快速定位到这个目录,在假设用户没有手工改变微信文件目录的情况下,可以这样来查找

  • 通过 Environment.GetFolderPath() 获取到当前用户的“文档”目录;
  • 拼接得到 WeChat Files 目录的路径;
  • 遍历 WeChat Files 目录下的子目录,去掉特殊命名的 All UsersApplet 等,在剩下的子目录中进一步猜测
  • 一般最近访问过的就是自己的微信账号目录

当然,猜测的目录不一定准确,所以写程序的时候最好能提供给用户一个可以手工修改/设置目录的手段,当然别忘了目录的有效性检查(检查目录存在)。

第二步,监听文件创建

监听文件变化只需要新建一个 FileSystemWatcher 对象,设置一些属性即可。

  • 设置 Path 到要监听的目录
  • 设置 .IncludeSubdirectories = true 表示需要监听其子目录
  • 添加 Created 事件在监听到有文件创建时进行处理

第三步,对监听到的新建文件进行处理

如果目录下有新创建的文件,上面 Created 事件的 e 参数(FileSystemEventArgs 类型)会携带文件的信息,通过 e.FullPath 可以拿文件的完整路径。然后使用 FileInfo 判断其是否只读,并解除其只读属性即可。

第四步,监听文件属性变更

实际使用中发现,只有在发送文件的时候,会在微信文件目录创建只读文件。接收文件的时候多数是收到的非只读文件,然后再改成只读属性的。所以还需要监听文件属性的变化。

这样就需要设置 FileSystemWatcher 对象的 NotifyFilter 属性,把 NotifyFilters.Attributes 标记加上。NotifyFilter 的默认值是 LastWriteFileNameDirectoryName

第五步,界面和用户体验

麻雀虽小,但也应该是五脏俱全。核心功能完成之后就需要考虑用户操作界面和使用体验上的一些问题。不用考虑得太复杂,但至少也应该考虑:

  • 这是一个常驻类应用,虽然不用注册成系统服务,但也应该考虑使用系统任务栏图标方式常驻;
  • 允许用户修改路径,开始/停止监听操作;
  • 提供简单的日志功能,让用户知道它处理了哪些文件。

注意:这是一个多项目分支库,克隆代码时需要指定分支
git clone -b WxFilesWritable https://gitee.com/jamesfancy/code-for-articles.git

空文件

简介

一些零散的代码,主要是为了支持博文 展开 收起
README
MulanPSL-2.0
取消

发行版 (2)

全部

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jamesfancy/code-for-articles.git
git@gitee.com:jamesfancy/code-for-articles.git
jamesfancy
code-for-articles
code-for-articles
WxFilesWritable

搜索帮助