利用Windows卷影副本(Volume Shadow)找回被覆盖和删除的数据

Windows默认启用的系统恢复机制会定期创建卷影副本,创建的时机通常为安装或卸载软件以及系统更新。卷影副本 (Volume Shadow) 实际上就是我们在 Linux 上经常提到的 “快照(Snapshot)”,它利用写时复制 (CoW) 机制为我们提供了文件系统在某个时间点的一个状态的视图。通过利用这个视图,我们可以找回近期不慎删除或被覆盖的数据,也可以用于某些电子取证场景。实际上,系统恢复就是利用快照机制还原文件到先前某个状态实现的。

注意: 由于卷影副本存在一个严重的bug, 该方法并不可靠!找回的文件数据可能不完整,或需要手动拼接。该方法仅供紧急情况或取证场景使用,切勿以此代替备份软件。

前提条件: 系统恢复未被禁用、文件系统为NTFS、存在可用的系统恢复还原点

利用软链接将卷影副本链接到常规磁盘分区下面,就可以访问这些过去时间点的文件系统视图了。

点击阅读全文 →

在Windows下实现WireGuard动态DNS解析(DDNS)的正确方法:避免无意义的开销

WireGuard 隧道一旦建立后,域名就不再重新解析了,一旦服务端的 IP 发生改变,这隧道就断了。

截止文章最后修订,WireGuard 官方始终没有提供 Windows 下的动态 DNS 解析(DDNS)客户端脚本,所以说你想实现,如果你想在 Windows 下使用 WireGuard 配合经常改变 IP 的域名,你就必须要自己写一个动态 DNS 解析脚本。

我基于网上的脚本进行了一番魔改,增加了以下特性:

  • 只处理已启用的 WireGuard 隧道,没开的隧道不会处理
  • 可以作为服务安装,自带延迟功能
  • 增加各类判断条件和错误处理,以便纠错

点击阅读全文 →

解决 Windows 打开视频/图片文件夹很慢的问题

症状:打开视频/图片文件夹时,会卡在“正在加载”界面很久,或者直接卡死。此时打开任务管理器,观察到 explorer.exe 的 CPU 占用率很高,有一些磁盘占用。

一开始以为是我把视频和图片文件夹放到了 OneDrive 里,但是把文件夹移出 OneDrive 后问题依旧存在。后偶然观察到在库上打开此文件夹没有这种问题,遂怀疑到是否是因为 排序/分组 的原因。

解决方法:在文件夹中右键,选择“排序”->“无”,然后再选择“分组依据”->“无”,问题解决。

出现这种问题的根本原因是我们用了需要读取图片EXIF和视频文件本身来做排序的属性,Explorer 需要打开该目录下的所有文件(例如对于照片是寻找EXIF),找到需要的信息,然后做完排序才展示出来。而如果我们选择了“无”,则不需要读取文件本身,直接展示即可。

当然,这样的话分组就没了啊?所以有什么替代方案吗?答案是有的,出现这种问题的根本原因是我们用了需要读取图片EXIF和视频文件本身来做排序的属性,那用文件系统本身支持的属性来做排序就可以了。例如对于“日期”(这个日期是照片的EXIF的日期,需要读取文件),我们可以用“修改日期”来排序(这个修改日期是文件系统的文件写入时间),这样就不需要读取文件本身了。当然两者是不完全等价的,不过一般情况是一样的。

点击阅读全文 →

AltA2DP - 向支持Sony LDAC协议的耳机提供Windows下蓝牙LDAC音频编码器支持

特别注意:禁止任何形式的转载!

本驱动可以解决Windows屎一样的蓝牙音频编码器,向支持 Sony LDAC 协议的耳机提供Windows下蓝牙LDAC音频编码器支持。个人破解版本,非最新版本,反正功能没差。新版授权机制改了,但最近在赶论文,没时间研究,有兴趣的可以自己研究一下(反正又不是不能用嘛 🤣)。

注意

  • LDAC 对蓝牙信号要求比较高,比如我笔记本自带的蓝牙用 LDAC 990Kbps 能卡的六亲不认,可以买个外接 USB 蓝牙用。
  • 打游戏时如果觉得 LDAC 导致延迟太高可以在它的面板里切换为 SBC 编码器。
  • 由于修改后的驱动没有签名,使得大多数带有反作弊的竞技游戏都会拒绝启动(基本上,除了 CSGO 都没法玩)。有些游戏甚至在只是安装驱动但未加载的情况下也会拒绝启动(点名批评战地2042)。因此,有打竞技游戏的需求则不推荐使用任何破解版本。

点击阅读全文 →

校园网白嫖思路分享:局域网中转-不花钱、不认证、高速上网

本文将分享一些校园网的白嫖思路(WireGuard / SoftEther VPN Server基于 UDP 53 端口的 VPN 三层白嫖、Socks 5 白嫖+科学上网二合一的四层白嫖),也就是不花一分钱就和一般用户一样使用校园网。

2023/2/23: 更新各平台配置NAT命令和L2TP方法,并根据先前在评论区的答复介绍可以直接放弃的一些不可行的思路

前提条件

下面列出的思路均要求使用一个校园网的服务器作为中转,因此,需要能够在不需要付费、认证后就能上网的网络环境(一般为办公区或实验室网络)下放一个电脑(树莓派也行);或者有任意学校服务器的使用权。

整体思路就是找个在学校里面地方搭个服务器中转流量

各种思路

基于 UDP 53 端口的 VPN 三层白嫖

原理:UDP 53 是 DNS 协议所用端口,由于门户(Portal)认证为了实现 HTTP 劫持跳转到登录页面,必须使得浏览器能够正常地进行 DNS 解析,因此在不认证、不付费的情况下也会放行 UDP 53 端口的流量。

特点不需要校园网认证,不需要购买校园网,不需要校园网账号。此外由于 VPN 自带加密,因此可以克服开放 Wi-Fi 网络通信完全不加密的缺陷。

下面所列出的两个思路均是三层(IP)级的 VPN 方法,可以转发所有三层报文,因此支持 ICMP 协议(可以用ping)。

注意:使用 UDP 53 端口需要所在网络没有DNS劫持的问题,如果你所在的网络存在DNS劫持(例如,OpenWRT的DHCP/DNS下的”DNS重定向”功能就是DNS劫持),则该方法会失败。

实现思路1:WireGuard

我特别推荐此方案。WireGuard 是几乎无状态的VPN协议,切换网络零感知,不需要重新连接VPN,对于经常睡眠-唤醒的电脑特别有用。睡眠唤醒后可以立刻上网。此外 WireGuard 在 Linux 和 Windows 操作系统上均是纯内核态的实现,性能极其高。

方法:搭建一个 wireguard 服务端,然后端口监听在 53 上

搭建 Linux 服务端的教程很多,一键包也很多。但若要搭建 Windows 服务端,请一定要阅读我之前的这篇文章

缺点:搭建确实有些复杂,另外配置文件对于不懂计算机网络的人来说实在是晦涩难懂

点击阅读全文 →

在 Windows 上配置网卡多个 VLAN、多个虚拟网卡、实现单线多拨网速叠加(无需驱动支持)

本文分为两节,分别是如何在 Windows 上利用 Hyper-V 交换机实现对 VLAN 的支持;以及如何利用 Hyper-V 交换机功能创建多块虚拟网卡,实现单线多拨叠加网速。可以只使用 Hyper-V 交换机而不使用 Hyper-V 虚拟机,所以这不会影响你电脑的性能。以上功能均不需要网卡驱动支持。

效果图:

ℹ️ 使用 Hyper-V 功能需要 Windows 10 专业版 或以上版本,如果你使用的是家庭版,可以通过断网更改产品密钥、再通过KMS服务器激活的方式原地升级到专业版。

点击阅读全文 →

在 VMware Workstation 桥接模式的网卡上让虚拟机使用 VLAN 的正确方法

要解决的问题

有一个虚拟机运行在 VMWare workstation 中,如何让这个虚拟机桥接到宿主机的网络上的某个 VLAN?

常见使用场景

只有一个网口的单臂软路由,同时宿主机为 Windows,虚拟机软件为 VMware Workstation,在虚拟机中运行 OpenWrt

需要在一个网口上,利用 VLAN 实现虚拟 WAN 口上的 PPPoE 拨号和 虚拟 LAN 口上的上网服务。

方法

  1. 根据宿主机网卡的品牌,下载对应的 VLAN 设置软件。已知 Realtek 和 Intel 网卡都提供这样的软件。Realtek 网卡的软件为 Realtek Ethernet Diagnostic Utility
  2. 下文以 Realtek 网卡为例。如果你的网卡厂商不提供 VLAN 设置软件,请直接转到文末
  3. 在宿主机上设置你想要使用的 VLAN 编号,软件将会创建一个虚拟网卡。记住网卡名称和适配器名称

点击阅读全文 →

在 Windows 上设置 NAT 或网络共享的正确方法——避免Wi-Fi热点无法使用

最近在我的笔记本上用 WireGuardServerForWindows 项目搭了一个 WireGuard 服务端,但是发现一个问题,我一给 WireGuard 开网络共享,我就没法开 Wi-Fi 热点了

罪魁祸首:SharedAccess

目前的NAT的普遍做法是用 SharedAccess 服务,也就是你在控制面板看到的那个 “Internet 连接共享”

但是这个服务是针对热点的设计的,只能支持一个 NAT 实例,这意味着,由于SharedAccess服务已经被wireguard服务器的NAT占用掉了,你就没办法建立一个有 Internet 的 Wi-Fi热点

但是,如果,使用New-NetNat命令,就能够设置许多NAT实例,同时可以用热点。

方法

点击阅读全文 →

我的 Windows 10 2004 新增 Bug 解决办法记录

虚拟化相关

大量端口被无端保留,50000 以上高位端口无法分配

这是 Hyper-V 导致的,可以卸载 Hyper-V 平台解决它。

具体参考:

系统为每个网卡都创建一个 vEthernet 虚拟网卡

这是 Hyper-V 平台导致的,只要装了 Hyper-V 平台就会这样,暂时没找到关闭办法。

先卸载 Hyper-V 平台、沙盒、容器、虚拟机平台、虚拟机监控程序平台。

如果之后需要使用这些功能可以重启后再启用。

WSL 2 进入 shell 卡死

执行:wsl --shutdown 强制停止 WSL 后再试。

VMware Workstation 兼容性问题

升级最新的 15.5.5 可以兼容 Hyper-V 了。

VMware Workstation 15 频繁未响应

似乎是一个 Bug,当剪贴板有图片时进入虚拟机就会导致卡死。

关于这个,我在 VMWare 社区发了个帖子:Workstation and Player GUI freezed when host clipboard has image on Windows 10

其他软件

手心输入法字体渲染模糊

打开手心输入法的安装目录,对所有的 exe:

属性 -- 兼容性选项 -- 更改所有用户的设置 -- 更改高 DPI 设置 -- 高 DPI 缩放替代 -- 选择 “应用程序”

另外可以禁用掉手心输入法的开机启动,没有任何其他影响

网易云音乐升级成了 x86 转制版本

我保留了一份 网易云音乐 UWP 版 Appx Bundle 存档,可以在这里下载:kenvix/NeteaseMusicUWP

这个沙雕版本正好和 Windows 10 2004 同时发布,就写到一起了

OneDrive 一直在 “连接中”

如果你开启了系统代理,请排除以下地址:

mobile.pipe.aria.microsoft.com
login.windows.net

此外,如果你使用 OneDrive for Business 还需要排除掉你的 SharePoint 域名,例如 example-my.sharepoint.com

点击阅读全文 →

Windows 选择指定的网卡来开承载网络型热点

Windows 10 自带的移动热点比较废,只允许带8个设备,并且在断网后自动关闭,不能满足需求。
而通过 netsh 创建的 Microsoft 承载网络虽好,但却不支持选择用于创建热点的网卡。
本文介绍的玄学方法可以让用户做到自己选择网卡开 Microsoft 承载网络 热点。

  1. 打开 网络和 Internet 设置
  2. 更改适配器选项
  3. 选择你希望使用的网卡,重命名
  4. 起个字母排序在你不想使用的网卡的名字之前的名字,例如 !AWLAN
  5. 开!热!点!
netsh wlan set hostednetwork mode=allow ssid=namehere key=passwordhere keyUsage=persistent
netsh wlan start hostednetwork

博主真的是随便试出来的(

修复升级 Windows10 版本后所有内置应用闪退+第三方应用参数错误的问题

昨天把Windows10升级到1809后所有应用都挂了,应用商店和内置应用闪退,常用的应用参数错误,连WSL都出问题了。容我先亲切问候一下微软 :)

修复内置应用闪退、应用商店打不开

这里有 几个没啥用的方法,反正对我来说真的没啥用。

修复办法:

  1. 打开 C:\Program Files
  2. 显示隐藏的文件,找到 WindowsApps,点击上方菜单的 共享 – 高级共享
  3. 修改所有者为 Everyone
  4. 启用继承,保存

说白就是因为 ALL APPLICATION PACKAGES 没有权限。
另外还有人说是因为N卡驱动问题、LicenseManager服务被禁用等等,反正我不是这个问题。

修复第三方应用参数错误

没修好,我选择重装

修复 Windows 环境下的程序访问 WSL 中的 MySQL 提示 Access Denied 的问题

症状

Windows 10 版本 1803 + Ubuntu 18.04
位于 Windows 下的程序(例如Navicat)连接 MySQL 提示 Access Denied
同样位于 WSL 的程序可以正常访问 MySQL

原因

MySQL 把 Windows 下的程序的连接视为远程 MySQL 请求,若你使用的 MySQL 用户没有远程权限,则会出错。
WSL 特性?#(滑稽)

解决办法

WSL 输入 mysql -uroot

use mysql;
update user set host = '%' where user = 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;
FLUSH PRIVILEGES;

现在就可以使用 root 连接了(无密码,本地开发环境搞个毛的密码)

修复 WSL 下 PHP+FastCGI 卡死的问题

症状

Windows 10 版本 1803 + Ubuntu 18.04
以 Nginx 服务端为例,访问多数 PHP 文件,PHP 会直接卡死。
访问那些极其简单的 PHP 文件 (例如Hello world, phpinfo()) 虽然可以加载出来但浏览器显示网页仍未加载完全。

原因

你肯定用了 Unix Socket 方式连接 Nginx 和 PHP,然而,WSL 对 Unix Socket 的支持有 bug….

解决办法

nginx.confserver 节点添加:

fastcgi_buffering off;

使用任意磁盘或路径保存 Windows 文件历史记录

不知为何,博主的 Windows 不允许使用本机的机械硬盘保存文件历史记录,这大概又是一个秘制bug吧。

无论是 Windows7 的备份还是 Windows10 的文件历史记录,它们都允许用户选择网络位置保存数据,于是我们就可以这样操作:

\\localhost\X$\Path

该路径表示本机 X: 盘的 Path 文件夹
例如,我要将文件历史记录保存到 D:\FileHistory,只需在 “文件历史记录” – 选择驱动器 – 添加网络位置 中输入 \\localhost\D$\FileHistory

禁用使用Intel核显的Windows笔记本自动调节亮度功能

Intel 核显自带一个“节电功能”,它的工作原理:

比如你设置的100%的亮度,放着一张白的图片,那么屏幕只能100%亮度显示。但是如果是50%灰的图片呢,我只要50%亮度显示纯白就行了诶。如果整个屏幕最亮的颜色只有10%,那就干脆把亮度降到10%来省电好了,然而对于电影这种明暗变化较快的没优化好,导致体验较差。
来源: 知乎/汤雨豪

这功能有多智障呢?博主在太阳底下写代码,因为光照太强了看不见屏幕,于是把电脑屏幕亮度调到100%,切回编辑器,然后,Intel核显自动把屏幕亮度给降回来了。

关闭方法

  1. 打开控制面板
  2. 打开Intel核心显卡设置 -> 电源 -> 显示器节电技术 -> 禁用
  3. 返回控制面板
  4. 电源选项 -> 更改计划设置 -> 更改高级电源设置 -> 显示 -> 禁用“启用自适应亮度”

USBCopyer: 插上U盘自动按需复制文件

注:本文介绍的是带来巨量更新的USBCopyer V5

USBCopyer: 插上U盘自动按需复制文件

用于在插上目标U盘后自动按需复制该U盘的文件。”备份&偷U盘文件的神器”
特点:

  1. 支持设置冲突解决方案
  2. 支持选择性复制,包括扩展名黑白名单、磁盘黑白名单。磁盘黑白名单支持序列号
    白名单模式结合版本控制可以方便地备份U盘
  3. 支持隐藏模式及开机启动
  4. 支持设置回调,可以自己编写代码实现某种高级的、程序没有提供的功能。
    默认提供Git版本控制支持
  5. 支持限制文件大小,防止复制大文件造成延误
  6. 支持延迟复制,对“偷”课件类的场景提升用户体验十分有用

本程序有两个图标,默认图标表示当前处于空闲状态,红色图标表示当前正在复制文件(工作中)

现已提供三个版本(标准版/兼容版)可供下载,见“已编译版本下载”节

已编译版本下载

.Net Framework 3.5 版本(管理员权限)

仍然建议以管理员权限运行,否则不能正确复制某些设置了权限的文件。

适用操作系统:Windows 7 / Windows Vista / Windows XP / Windows 10 1803 以后版本
WinXP请注意:XP可能需要手动安装 .NET Framework 3.5,没有安装请点此
点击从Git@OSC下载(中国大陆用户推荐) 点击从GitHub下载

.Net Framework 4.0 版本(低权限版)

适用操作系统:Windows 8 / Windows 10 1803 以前版本
点击从Git@OSC下载(中国大陆用户推荐) 点击从GitHub下载

自 V5.0 开始,标准版即为低权限版。不会弹出UAC警告。亦支持高DPI缩放。

适用场景

  1. 获取授课教师的课件
  2. 获取插到某台公用电脑上的U盘的数据
  3. 快捷地备份U盘(从V5.0开始)
  4. 备份U盘的同时进行版本控制

如何使用

1.下载
2.双击 USBCopyer.exe
3.程序将在托盘区运行,右击图标可以调整其参数
点击 “隐藏图标” 将彻底隐藏程序,只能使用任务管理器停止,或按Win+R输入taskkill /f /im USBCopyer.exe
点击 “设置” 可以设置程序

命令行

USBCopyer.exe [/hide] [/gui] [/reset]
/hide 以隐藏模式启动,只能通过任务管理器结束进程
/gui 除非使用 /hide 参数,否则无论如何都不要使用隐藏模式启动。可用来解除隐藏模式
/reset 恢复默认设置并退出,若失败,返回退出码1。可用来解除隐藏模式,但会丢掉所有设置

常见问题

USBCopyer的复制行为造成U盘的文件操作卡顿

请设置一个延迟。通常推荐在使用者开始放映幻灯片时开始复制

使用者在使用该电脑前重启了此电脑

将本程序设为开机启动即可。设置方法如下:

  1. 直接在本程序的“设置”中设置
  2. 若上面的方法无效,则可:
    创建一个快捷方式,然后加上参数,拖到 “开始菜单” 的 “启动” 文件夹即可
可否复制手机的文件?

若为MTP/PTP则无法实现(V6.0也许会实现),但如果是以Mass Storage(大容量存储)模式挂载到电脑上的设备则可以复制

U盘在操作完成前被拔出

请使用心理学方法防止U盘在操作完成前被拔出

如何防止拷到病毒?

安装杀毒软件,监控 USBCopyerData 目录即可

目标电脑带有还原机制

两种方法:
1.插上你的U盘,然后启动本程序,加入该U盘到黑名单,然后设置输出目录到你的U盘
2.用 PCHunter 之类的程序干掉还原程序

如何使用回调&如何配置Git版本控制?

参见:https://kenvix.com/post/usbcopyer-callback/

代码仓库

GitHub
我的博客文章

因账号被封,Git@OSC 仓库停止更新

捐赠

USBCopyer 是一个开源的,非盈利的项目。如果你喜欢这个项目,请捐赠它:

支付宝捐赠
微信支付捐赠

USBCopyer 回调功能详细说明

“回调” 是 USBCopyer V5.0 新引入的一个概念,它用于在 USBCopyer 执行特定操作时触发用户指定的代码或程序,以便实现某种高级的、程序没有提供的功能。

基本使用方法:

  1. 在USBCopyer设置打开回调的开关
  2. 打开USBCopyer所在目录下的 USBCopyer\USBCopyerSystem 文件夹
  3. 建立 回调名字.bat ,例如 AllCompletedCallback.bat
  4. 在里面写代码。可用的变量如下:

可用变量

书写以下内容就会被USBCopyer自动转换成相应的值。

变量名 说明
{$SystemDir} USBCopyer 所在目录
{$SystemVer} USBCopyer 版本号 例如 5.0.0.0
{$DataDir} USBCopyerData 所在目录(设置的数据目录)
{$USBDir} 本次复制所得的文件所在目录,不含{$DataDir}
{$VolumeSerialNumber} 磁盘序列号
{$VolumeName} 磁盘卷标(名字)
{$Volume} 磁盘盘符,例如G:
{$DriveType} 磁盘种类(返回数字)

磁盘种类:

Unknown (0)   
No Root Directory (1)  
Removable Disk (2)    
Local Disk (3)   
Network Drive (4)   
Compact Disc (5)  
RAM Disk (6)  

具体回调说明

当回调运行时,基准目录是 USBCopyer 所在目录下的 USBCopyerData\USBCopyerSystem 文件夹(无视数据目录设置)
回调的所有输出都会被捕获,并记入日志。

回调:AllCompletedCallback

在磁盘文件全部复制后触发,可以用于调用Git实现版本控制、调用云盘客户端实现上传等
当 USBCopyer 变成空闲状态时,便会创建一个新线程运行此回调

回调:DiskDetectedCallback

当磁盘插入时触发。可用于做复制判断
若 “(回调2)等待完成,并只允许返回0时复制” 启用,则该回调将阻塞复制线程,并在回调完成后且退出码为0时继续复制。
若上述设置未启用,则该回调对复制线程没有影响。
变量{$USBDir}不可用。强行获取将得到NONE

玩法实例:使用GIT进行版本控制

首先安装最新版本的 Git,安装过程一路 Next 即可
然后在 USBCopyerData 打开命令行或Powershell(win10为资源管理器点击左上角文件),输入:git init
然后保存以下代码到:USBCopyerData\USBCopyerSystem 文件夹,命名为 AllCompletedCallback.bat

@echo off
echo USBCopyer Git Tool // Written by Kenvix
echo USBCopyer Version: {$SystemVer}
cd ..
git add .
git commit --author "USBCopyer <usbcopyer@kenvix.com>" -m "AutoCommit: {$USBDir}" .
exit %ERRORLEVEL%

Win10 资源管理器为所有格式激活“编辑”按钮并修改文本文件“编辑”按钮的编辑器

默认情况下,Windows 10 资源管理器的功能区对绝大多数文本格式的不可用的,即使能够使用(例如 .js .cpp .txt 等格式),“编辑”按钮所对应的编辑器也是废物一般的记事本(用记事本写代码?),使得这个“编辑”按钮显得华而不实。为了让编辑文本更加方便、充分利用这个“编辑”按钮,本文将介绍如何通过修改注册表以为为所有格式激活“编辑”按钮并修改文本文件“编辑”按钮的编辑器

思路

Windows10 功能区的“编辑”按钮可用与否取决于注册表中HKEY_CLASSES_ROOT中对应的格式下的shell项是否存在edit子项,若edit项存在,则该按钮可用
只需增加edit子项并设置启动命令行即可激活编辑按钮或达到更改编辑器的目的

实现

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\edit]

[HKEY_CLASSES_ROOT\*\shell\edit\command]
@="\"编辑器路径\" \"%1\""

[HKEY_CLASSES_ROOT\txtfile\shell]

[HKEY_CLASSES_ROOT\txtfile\shell\edit]

[HKEY_CLASSES_ROOT\txtfile\shell\edit\command]
@="\"编辑器路径\" \"%1\""

将上述代码中的 编辑器路径 替换为你的编辑器的路径,然后将上述代码保存为 1.reg ,双击导入即可