Lexsion 发布的文章

USB Type-C 设备插入电脑显示 BillBoard设备

前言:

笔者有一台带有 Type-C 接口的口袋电脑,近期为其买了一个C口转A口+以太网口+TF&SD卡+HDMI+PD的强大 USB 扩展坞 ,笔者注意到,扩展坞插入电脑后会在设备管理器中显示一个名为 USB 2.0 BILLBOARD 的设备。众所周知,BillBoard意思是公告板,为什么会出现这样的设备呢?笔者经过一番查证,以下便是它的前因后果。

BillBoard 是什么?

USB-IF 协会于2014年公布了 Power Delivery v2.0 的规格,同时也在原本的USB Class定义了新的分类:Billboard Device Class v1.0。

USB-C 即 Type-C 接口已经广泛应用于各种设备中,相比之前的传统 USB 接口,Type-C 接口具有结构小巧、支持正反插、更高的电力传输,以及可选模式(如 DisplayPort ,即 DP 视频传输/又如 Thunderbolt,即雷电接口)等特性。其中,对于各种可选模式的支持,离不开 Type-C 接口物理结构的支持。Type-C 接口中提供了四组差分信号,他们成中心对称排列于上下两排触点,每排都分别有1收1发,以支持正反插。Type-C 接口可用的场景很多(比如视频音频传输、PD 快充),不再像传统USB接口那样单纯的提供数据传输。有些功能通过简单的外围电路进行识别,如 USB2.0、DCP、Accessory Mode(附件模式);而有些则需要通过 USB 控制器实现,比如 USB3.0 通信时,USB 控制器负责进行协商,分配差分信号通路。

正如前文所述,Type-C 接口除了传统的数据传输,还支持一些其他的功能。而这些功能在设计时是可选的。比如,并不是用了 Type-C 口的设备就一定会有 DP 视频输入输出功能,毕竟需要考虑产品实际需要的功能。这方面,Type-C 定义了一种模式称之为 Alternate Mode(交替模式)。USB 协会为每一个标准的可选模式定义了唯一的标准编码,Host 和 Device 的 USB 控制器通过此编码沟通是否支持某种模式,识别进入退出 Alternate Mode 的相关的命令是由 USB PD 组织 VDM 命令发生的,相关信号的传输是通过 CC 引脚(配置通道)进行的。

这里举一个例子:一台支持通过 Type-C 进行 DP 视频输出的笔记本电脑,和一台 Type-C 接口的 DP 显示器连接,这种显示器一般带有USB扩展坞功能。此时,电脑作为 USB Host ,显示器作为 Device。它们都支持 DP,USB 控制器沟通后会将两路差分对(即一个发送和一个接收)分配给 USB 数据,另两路差分对分配给DP 用作视频流传输。

而如果 DP 显示器通过 Type-C 接口插在了不支持 DP 的显示器上,结果就是作为 Device 的显示器与做为 Host 的计算机沟通进入 Alternate Mode 失败。针对此情况,USB 协会定义:Device 端产生一个 BillBoard 设备,以此通知Host端与用户了解此问题。

综上所述:BillBoard是Device端提供支持的,用于 Device 端发现自己支持的功能没有被 Host 端接受时触发,以提醒该事件。

什么情况会出现 BillBoard?

上文提到,出现 BillBoard 设备表示 Device 端发现自己支持的功能没有被 Host 端接受。所以,电脑出现此提示一般有两个原因:

  1. Host端不支持相应的 Alternate Mode。比如 Type-C 口 DP 显示器通过 Type-C 连接线插在了不支持Type-C 口输出 DP 的电脑上。笔者的破电脑就是这个情况,这种情况自然是无解的,也是正常的。能做的只是咱们忽略这个提示,不使用相关功能。
  2. Host 端支持相应的 Alternate Mode,但设备之间使用了 USB A to Type-C 线。即使用 USB A to Type-C 线,Type-C 的那一头插在 Device 端,USB A 口插在了 Host 端。而 A 口显然是无法提供 Alternate Mode 支持的,因为它没有 Type-C 接口那么多的差分对提供。这种情况换一根双头满 Pin 的 C2C 线就好了。

USB通信协议非常复杂,笔者水平有限,如有错漏,欢迎指正。

参考:

Arduino MKR Zero 上手笔记

前言:

笔者最近参与了 DigiKeyB站的Arduino盘点抽奖活动,有幸获得了一块Arduino MKR ZERO开发板。与复制品很常见的UNO和Mega2560不同,MKR ZERO使用的是 Microchip 的 SAMD21处理器 ,内核为32位的ARM Cortex-M0+ ,而前两者是8位的 AVR内核。这种原版的开发板我是万万买不起的,这次既然有幸得到,自然要点灯为敬。

Arduino MKR Zero——DigiKey零件页面

以上得捷页面提供了部分信息,话说看其价格也许比某宝便宜一些?(但不知道加上运费怎么样?

简介:

Arduino MKR ZERO 开发板在较小的尺寸上提供了不错的性能。MCU采用 32 位 ARM Cortex® M0+ 内核,且内有DAC。开发板提供了Micro USB & 电池双供电以及电池充电电路,且板载使用SPI接口的MicroSD连接器和一枚ECC508加密IC。如此,该开发板可以在不添加其他硬件的情况下播放音频文件。

警告:与大多数Arduino和Genuino板不同,MKRZero的运行电压为3.3V。I/O引脚可以承受的最大电压为3.3V。对任何 I/O 引脚施加高于 3.3V 的电压可能会损坏电路板。

技术信息:

技术信息
微控制器 SAMD21 Cortex‐M0+ 32bit low power ARM MCU
开发板供电电源 5V Max Micro USB
支持的电池 单节 Li-Po,3.7V ,至少700mAh容量
3.3V最大输出 600mA
5V最大输出 600mA
IO工作电压 3.3V Max
数字I/O数量 22
PWM引脚 12 (0, 1, 2, 3, 4, 5, 6, 7, 8, 10, A2 - or 18-, A4 - or 19)
串口数量 1
SPI数量 1
I2C数量 1
模拟输入引脚数量 7 (ADC 8/10/12 bit)
模拟输出引脚数量 1 (DAC 10 bit)
外部中断引脚 8 (0, 1, 4, 5, 6, 7, 8, A1 ‐or 16‐, A2 ‐ or 17)
单个 I/O 最大电流 7 mA
容量 256K Flash (8K Bootloader),32K SRAM,NO EEPROM
时钟频率 48MHz (Main),32.768kHz(RTC)
板载LED引脚 32 (PB08) LED_BUILTIN suggested

开发资料:

开发环境部署:

Arduino MKR Zero 是Arduino官方出品的开发板,其使用的开发环境自然是Arduino IDE。

首先到 Arduino IDE下载页 下载Arduino最新的Arduino 1.8,并按提示完成安装,安装路径建议不要有空格或中文。

安装完成后打开Arduino IDE,接下来要安装SAMD Core。点击 工具 > 开发板: > 开发板管理器... , 在弹出的窗口中将显示所有可用的开发板。

在搜索框中以 samd 为关键词搜索,在搜索结果中找到Arduino SAMD Boards (32-bits ARM Cortex-M0+) 并点击安装,安装期间若有驱动安装提示请允许,否则无法正常上传固件。若安装有困难,可能需要使用代理。

点击 工具 > 开发板: > Arduino SAMD Boards (32-bits ARM Cortex-M0+ > Arduino MKRZERO 选择开发板型号,点击 工具 > 端口 > COMxx(Arduino MKRZERO) 选定开发板串口。这时点击 工具 > 取得开发板信息 可以读到开发板信息即表示通信正常。

点灯:

点击 文件 > 示例 > 01.Basics > Blink ,打开闪灯示例程序,为了与出厂预置闪灯程序区分,将delay延时函数的参数改为250(代码如下),然后点击 上传 ,此时Arduino IDE会开始编译,编译完成后自动上传。等待其成功上传后观察板载LED闪烁速度,变快了便是成功了。

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(250);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(250);                       // wait for a second
}

参考:

M5Stack ATOM Lite 上手笔记

前言:

立创商城连续搞了好几个月海外购51-50包邮活动,11月笔者用券购买了M5Stack ATOM Lite (SKU:C008),减50券后仅需约7元。这是一款带有外壳的超小型开发板,尺寸只有24 24 10 mm。主控为ESP32-PICO-D4@240MHz,提供了2.4GWIFI、BLE无线通信技术,供电接口采用TypeC接口,板载1枚SK6812 RGB LED、一枚红外发射管、复位键和一个用户按键,对外提供了6个GPIO和一个GROVE接口。除了IO口较少外其他也算是很不错了。官方提供了Arduino和UI-FLOW两种开发方式,Arduino众所周知用的是C++,而UI-FLOW是基于MicroPython并提供了积木编程,综合看来这个产品对于创客和少儿编程是很不错的产品。笔者算是简单学习一下相关流程,本文算是做笔记,以备日后查阅。

安装驱动:

众所周知,使用单片机开发板首先要安装驱动。有网友表示,ATOM Lite固件下载使用的USB转串口是用沁恒CH552模拟的FTDI,正常情况下Windows系统能够自动安装驱动。查看设备管理器,如果没有自动安装,可去FTDI官网 下载驱动安装,然后在设备管理器中手动安装。这里需要顺便记住串口编号。

Arduino上手:

配置IDE

首先需要下载 Arduino IDE 并安装。

打开 Arduino IDE,点击 文件->首选项->设置 ,复制下方的 M5Stack 板管理网址到 附加开发板管理器: 中并保存。

https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json

点击 工具->开发板:->开发板管理器...,搜索 M5Stack,点击安装 。完成后点击 工具->开发板:->M5Stack Arduino, 选择M5Stack-ATOM。点击 工具->端口: ,选择之前记下的端口号。

点击 项目->加载库->库管理... ,搜索 M5Atom 并安装,安装时需根据弹窗选择安装相关依赖库。

点灯

下面是官方提供的点灯程序,复制到Arduino IDE中。点击菜单栏中的上传 ,程序将自动完成编译上传,至此便完成了配置。库函数资料可查看M5Atom-Lib系统函数

#include "M5Atom.h"
void setup(){
    M5.begin(true, false, true); 
    delay(50);
    M5.dis.fillpix(0xff0000); // 十六进制 GRB 颜色
}

void loop(){

}

UIFLOW上手:

笔者尝试发现,UIFLOW相关应用无法在Win7下运行,官网针对Windows的支持只有Win10。所以,学习UIFLOW需要准备运行Win10系统的电脑。

使用UIFLOW有两种方式,一种是使用在线IDE开发并在线下发程序,另一种方式是使用离线的UIFLOW Desktop IDE进行本地开发,通过串口本地上传程序。两种方法都要先利用M5Burner烧录配置工具烧录基础固件、配置网络。

烧录配置UIFLOW固件:

首先需要下载M5Burner,下载后解压到合适的位置。双击主程序M5Burner.exe运行,如果电脑没有。net3.5运行库,系统会提示安装Windows功能,根据提示联网自动安装即可。

在M5Burner的主界面左侧点击 ATOM 图标,然后在主窗口找到UIFlow_Lite,选择版本后点击下方的Download按钮下载相关文件。将上方的 COM 口设为装驱动时看到的端口号,Baudrate保持默认。

点击UIFlow_Lite中的 Burn图标进行烧录,开始前会弹出窗口提示输入要连接的WIFI名称和密码,此处可以直接设置或留空后续设置。点击Start后弹出Log界面开始烧录固件,此处能看到百分比,等待输出 Burn Successfully 后即表示烧录完成。

点击UIFlow_Lite中的 Configuration图标进入配置窗口,此处可以设置启动后进入的模式、使用的在线IDE服务器以及联网的WIFI信息。这里复制其中的ApiKey下一步使用。

配置在线开发环境:

配网方式:如果烧录前没有设置WIFI信息,可通过 Configuration 页面设置或再次烧录。除此之外,可在上电或复位的同时按住中间按键,直到亮黄灯后松开,此时黄灯常亮表示处于配网状态。尝试使用电脑或手机连接WIFI热点 M5-XXXXXXXX ,连接后浏览器打开 192.168.4.1 ,在此页面设置WIFI的SSID和密码,点击Configure 。亮红灯,待连接WIFI后亮蓝灯,与服务器建立连接后亮绿灯。此时表示与UIFlow服务器连接正常,可以在线编程了。

打开 flow.m5stack.com ,将刚才复制的ApiKey粘贴到第一个文本框中,语言选择简体中文,点击选定AtomLite的图标,然后按确定等待完成连接。完成连接后出现主界面,网页左下角会显示已连接标识。

Tips:开发板上电或复位时按住中间键不放,等不同颜色灯亮起时松手会进入不同模式。除配网模式外,开发板会记忆上次进入的模式。

  • 绿灯:UIFlow在线编程
  • 蓝灯:UIFlow离线编程
  • 黄灯:配网模式
  • 紫灯:运行最后一次下载的程序

配置本地开发环境:

下载 UIFLOW Desktop IDE 并解压到很合适的位置,双击运行 UIFlow-Desktop-IDE.exe ,如果用过了在线IDE,你会发现界面几乎一样。

开发板按住中间键不放上电,等待亮蓝色灯时松手,确保蓝灯常亮,此时进入离线编程模式。设置COM口为安装驱动时记住的端口号,设置语言简体中文,点击选择AtomLite设备图标,最后点击OK键连接。

点灯:

积木编程界面所见即所得,从硬件--》RGB灯中拖拽一个设置全部RGB灯颜色为X的积木拼接在Setup积木后面,然后点击右上图标区的三角形RUN标志即可运行,若需要将程序下载到开发板,可找到下载按钮点击即可。如果需要查看或编写MicroPython代码,在上方标题栏中间点击Python标志切换即可。具体代码编写笔者暂时不会,就不写了。详细参阅官方文档:[Atom UIFlow上手指南](m5-docs (m5stack.com)) 的其他章节。

参考:

笔电坏桥记

上个月笔者与网友们一起研究为某个安卓机器(关键词BYT,具体是啥,懂得都懂)刷机。结果机没刷成,意外搞坏了电脑PCH(南桥),因为当时使用的是主力机,且笔者主力机是一台笔记本电脑,所以损失惨重(台机坏南桥可以直接换主板,笔电因为U和显卡焊在主板上,一般要换桥刷BIOS)!笔者此处写一篇笔记,警醒自己也提醒各位朋友,研究技术需谨慎!

机器采用高通210方案,设计非常高端。我们研究的首要目标是备份出分区,然后才能进行后续的学习研究。而高通的方案要想备份分区,需要设备进入9008模式,一般是需要短路某测试点,但是在经过不断尝试后,发现该机器设计很研究,无从下手!在最后一次的短接中,疑似笔者手抖短接了不该短接的测试点、抑或是导入了静电。短接的瞬间,电脑瞬间黑屏!

电脑黑屏后,笔者略感惊讶。随后尝试按电源键重新上电开机,发现按电源键没有任何反应,此时笔者心里开始感觉微微有那么一点点慌。随后就把电脑外接电源和电池都拔了,等了一会儿,重新插好电池和电源,尝试开机,果然还是不行。笔者心想:坏!随寡人征战多年的战争机器今天怕是挂了!

随后笔者找出了一根DC测试线,将其拧到了可调电源上,随手调了个19.5V 3A。拆除了笔电的电池和所有硬盘,通过可调电源供电,发现电流只有3mA左右,按电源键尝试开机,也只是有几mA的按键电流变化。看到这个电流,笔者心想:淦!怕不是PCH(南桥)挂了!这下彻底慌了。只能拆开看看了!

拆开机器的后维护盖,拆下键盘。目测主板没有明显烧焦冒烟的位置,南桥也没有炸裂的迹象。但这并不能说明南桥没有问题,考虑电流只有3mA,没有出待机电流,也没有短路电流,依然高度怀疑南桥故障。拿起万用表,打到二极管档测试各电感对地压降(很多维修师傅们都叫这个叫阻值,实际是误传,叫的人多了成了行话),发现某个电感对地压降为0,打到电阻档,测对地阻值也是0。查阅该机维修手册中的原理图,发现对地短路的电感对应南桥的1.05V电路部分,到此可以确定,真的是南桥挂了!

此时笔者心中五位杂陈!这台机器是神船的产品,做工并不好。它跟随笔者六年了,一台做工不好的笔记本用6年,很难说是否值得去修它。这机器南桥大约要二百元左右,找人修的话加上人工费估计四五百左右。自己修的话,一方面工具不齐全,再者这机器的拆机也比较麻烦,且更换南桥需要刷BIOS,这方面笔者也没有研究。想来这台机器使用多年,之前键盘部分按键也坏了,并且买不到原厂键盘了。现在酷睿笔电已经到了11代,12代酷睿笔电平台理论上也将在1Q22上市,且据说这次牙膏厂把牙膏踩爆了,最终笔者决定先观望,等新品。

考虑此次事故原因,后期为避免类似事情发生,笔者将使用USB HUB 进行刷机、芯片下载调试等操作。USB HUB 应当有相关保护电路,如自恢复保险,TVS管等。针对易引发危险的操作,应当使用非主力机进行,力求未来避免或降低损失。在此也提醒各位网友对自己的战争机器好一点。研究技术要谨慎,保护设备需牢记!

腾讯云函数自动领取EPIC每周免费游戏

前言:

EPIC自20年某个时候开始,就每周赠送一两个免费游戏,大多送的都是些比较便宜的货,但有时也会送出一些像GTA5这样的大作。基本每周四的晚上差不多就可以领取,以往我都是每周五晚上领。最近笔者的主力PC坏了,暂时没有像样的机器用了,喜加一获得的免费游戏也没有电脑可以玩了。但是喜加一不能遗漏,为了贯彻 我可以不用,但不能没有 这个宗旨,游戏还是要领取的,有没有更省事的办法呢?

本着坚信 我遇到的问题,很多人也应该会遇到 的观点,我直接在GitHub上以 EPIC免费游戏 关键词进行搜索,果然找到了几个项目。其中 epicgames-claimer 项目有300+ Star且最近有更新。于是便参考作者给出的文档将其部署到了免费的腾讯云函数上。笔者测试的结果是游戏领到了,但是配置的Server酱推送结果没有起作用。函数运行了十几分钟,打印了巨量的日志,使用了80GB·s的资源,这与其他的签到类云函数相比,已经是非常高的资源消耗了。但索性一周只领一次,其消耗的资源还在免费范围内。感觉这个项目挺有趣,可能会有其他人也需要,所以笔者将其记录下来。

大佬的GitHub仓库已经翻车了,我把文件传到了IPFS网络,需要的朋友可以试试能否部署成功。

部署过程:

  1. 将文件 epicgames_claimer.pyrequirements.txt 从Github下载到本地并打成Zip包

  2. 打开腾讯云控制台,有账号直接登录,没账号注册再登录。找到并进入云函数界面。

  3. 切换函数服务的区域,比如我选择的香港。然后点击 新建 ,打开新建页面。

  4. 选择 自定义创建事件函数 、 填一个自己能认出来的函数名称、 部署方式选择 代码部署 、运行环境选择 Python3.6

  5. 函数代码中的提交方法选择本地上传zip包,执行方法填 epicgames_claimer.main_handler ,并上传之前打包的ZIP压缩包。

  6. 展开高级配置,将内存改为1024MB,执行超时间改为900,添加EMAIL变量值为EPIC的登陆邮箱、PASSWORD变量值为EPIC登录密码,再添加一个推送变量,比如笔者使用的Server酱变量名为PUSH_SERVERCHAN_SENDKEY,其值为Server酱的SendKey。

  7. 其他保持默认,点击完成等待完成创建。

  8. 打开此函数的配置页面,打开函数管理,点击函数代码。在网页的代码编辑器中左侧导航栏的src目录右击,选择在集成终端中打开。运行以下命令:

    pip3 install -r requirements.txt -t .
    mv bin/pyppeteer-install .
    ./pyppeteer-install
    cp -r /root/.local/share/pyppeteer/local-chromium/*/chrome-linux .
  9. 完成后点击部署,并运行此云函数,观察是否能正常使用。

  10. 若可以正常使用,则点击 触发管理创建触发器 。触发方式选择 定时触发 ,名称按需设置,周期选择 自定义出发周期 ,按照文档填写Cron表达式,比如 0 10 15 * * FRI * 是每周五15点10分触发一次任务。勾选立即启用,点击提交完成定时触发的配置。

注意:

使用此方法需要关闭EPIC账号的双重验证,这个可以在EPIC官网的安全设置中找到。

据说EPIC限制了单个IP领取免费游戏的数量,所以使用云函数可能领取不成功,使用此函数还需多关注EPIC邮件通知,因为游戏领取成功后官方会发送订单邮件。

这个项目使用了浏览器,所以占用资源较大,内存务必配1024MB。如果配置了多个领取函数,请注意资源消耗。

有条件建议在本地搭建相关服务,而不是云函数。

参考:

NTFS文件系统出错导致文件操作提示:文件访问被拒绝

前言

意外断电导致硬盘文件系统错误,在运行完文件系统检查后,部分文件夹的图标上出现了锁头的图标,尝试打开文件、复制到其他地方,Windows系统提示文件访问被拒绝,您需要权限才能执行此操作。从而导致工作无法进行下去。
此问题常出现在硬盘意外断电、硬盘更换电脑使用等情况。笔者曾多次遇到此问题,但具体情况略有区别。本文旨在整理相关处理方案,方法不一定都能奏效,仅供参考。

注意:即便使用以下方法恢复了对文件的访问权限,也建议您尽快备份磁盘或分区的文件,将磁盘或分区重新格式化再使用。

单个文件的处理

如果只是单个的文件出现了问题,可以尝试手动修改文件的权限信息。

  1. 右击文件,点击 属性 打开属性窗口,点击 安全 选项卡,在点击 高级
  2. 在高级安全设置的窗口中,检查 权限所有者 的配置,如果权限中没有当前登录的用户名或Everyone组,尝试向其添加 Everyone 组,并为其设置允许完全控制的权限(如果有用户或组,但权限配置不正确也如此修改)。
  3. 如果设置权限失败,则检查 所有者 选项卡。如果所有者不是当前登录用户名,尝试改为当前登录用户。如果仍然失败,可能是用户权限不足,若所有者是administrator,可尝试登录administrator账号处理。

命令批量处理

当有大量文件需要处理时可参考上文尝试直接对文件夹或磁盘的安全属性进行设置,但有时可能会遇到失败。那便可以尝试通过命令方式取得文件权限。

  1. 使用管理员权限打开命令提示符。在开始菜单搜索中搜索cmd命令提示符,然后在其上右击,选择 以管理员身份运行 (Windows10在开始菜单的右键里)。

  2. 使用以下命令切换到欲操作的分区或目录:

    cd /d E:\xxx
  3. 使用以下命令获取文件所有者权限:

    takeown /R /F *
  4. 使用以下命令重置文件权限:

    icacls * /T /Q /C /RESET

    到此,您应该重新得到了操作文件的权限。

添加右键菜单处理

通过导入一些注册表信息,添加一个名为 管理员取得所有权 的右键菜单。用来处理此类问题。方法是将以下代码保存为纯文本文件,并重命名为 xxx.reg 。最后双击文件按系统提示导入注册表即可添加菜单。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" & icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" & icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\exefile\shell\runas2]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]
@="cmd.exe /c takeown /f \"%1\" & icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" & icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y & icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y & icacls \"%1\" /grant administrators:F /t"

添加右键菜单后,只需在需要处理的文件或文件夹 右击,选择 管理员取得所有权 即可。

使用Linux系统处理

大多情况下,将磁盘挂到Linux系统下复制文件可以忽略文件系统错误导致的权限问题。这需要有一台运行Linux系统的计算机。考虑操作方便,建议选用桌面系统,比如Ubuntu desktop。插入磁盘后应该能自动发现并挂载,图形界面的操作无需多言。如果您选用无桌面的Linux系统,相信您的技术也能自行完成操作。