其实在 SMB 连接上翻车已经是苹果的祖传艺能了。2017年我也发现过类似的Bug。这几天又发现了一个 SMB 文件共享连接故障的 Bug，“连接到服务器“192.168.1.10”时出现问题。请检查服务器名称或IP地址，然后再试一次。如果问题持续发生，请联系系统管理员”。原本可以正常使用的 SMB(Samba)文件共享连接，系统升级后，突然就不工作了。造成这次 Bug 原因也是非常奇葩，是先前能够正常挂载的 SMB 驱动器使用了「自定义图标」造成的。修复方法也很简单（当然为了解决这个问题我也花了几天时间）：先重启已经无法连接的 Samba 服务器，然后你会发现可以重启后是能够正常挂载一次的（锁定系统或者隔一段时间后再连接就又会出现故障）。然后在 MacOS 中，在桌面上找到已经挂载的驱动器图标，选中后按 “Command+I”打开属性，用鼠标单击顶部的自定义图标，然后再按下 “Command+X” 把自定义图标剪掉，之后驱动器图标会恢复为系统默认样式，最后重新系统，故障应该可以顺利解决。如果重启后仍然无法连接，可以再次尝试先重启已经无法连接的 Samba 服务器并再次挂载，并在 MacOS 中使用命令行，彻底清除之前已经挂载的驱动器的扩展属性：xattr -c /Volumes/你的共享\ 名称 提示：如果驱动器名称中有空格，请在空格前键入“\”，如上所示。问题即可解决。这个问题在旧版本的 MacOS Monterey 下不会出现的，只会发生在 MacOS Ventura 13.2 及 13.3下，另外同样能对iOS 16.3造成影响。目前最新的 13.4 Beta 1 尚未修复这个错误。这个问题在AppleInsider论坛 \ Reddit 上也有过大量讨论。如果上述操作对你仍然无效，则可以试图切换 MacOS 的 SMB版本：sudo sh -c "echo '[default]' >> /etc/nsmb.conf; echo 'protocol_vers_map=6' >> /etc/nsmb.conf" 7：这将启用 SMB 1/2/3（默认）6：这将启用 SMB 2/3 4：这将仅启用 SMB 3 2：这将仅启用 SMB 2 1：这将仅启用 SMB 1启用此处的 =6 代表设置为仅 SMB v2/3（低版本的 Mac 系统曾经是使用 “smb_neg=smb2_only”，现在失效了）。这个命令会在 /etc 目录中添加一个 nsmb.conf 文件，系统检测到这个文件后就会默认按照你设置的值对外连接SMB。修改后需要重启才能生效。（如果需要回到默认连接，只需要 rm /etc/nsmb.conf 即可）。
Parallels Desktop 17 for MacOS 虚拟机软件的常见错误处理方法
本篇文章是对Parallels Desktop 常见问题的修复方法整理错误提示：Failed to start the VM: Operation canceled. The operation has been canceled. (255)解决方法：说明你的PD版本有变化，但虚拟机仍处于休眠或者中止状态，还没有匹配好。请将虚拟机关机，或者强行停止虚拟机，再退出PD，然后重新启动PD，再运行启动公交即可解决。（强行停止虚拟机的方法：右键PD，选择控制中心，双击虚拟机齿轮附近空白处，打开虚拟机窗口，然后在屏幕左上方的菜单栏，选择操作—停止，这样也可以强行关闭虚拟机。）错误提示：Failed to start the VM: The configuration file you specified is invalid. Make sure that the specified file is a valid Parallels virtual machine configuration file and it is not corrupt, or select another file. (255)解决方法：虚拟机的文件已丢失，可以右键PD，选择控制中心，检查虚拟机的状态，如果虚拟机已经损坏，建议重装虚拟机系统。如果出现以下的状态，可以到回收站找回本体文件，然后复制到你Mac电脑的个人文件夹中，路径为/Users/你的用户名/Parallels。错误提示：无法打开“Windows 11.app“，因为无法验证开发者。 MacOS无法验证此App 不包含恶意软件。 此项目位于磁盘映像“直接启动 Windows 11.dmg“上。“Safari浏览器“于2022年1月1日从“www.icloud.com“下载了此磁盘映像。解决方法：在「系统偏好设置—安全性和隐私中—通用」，在下方选择「仍要打开」允许这个程序即可。错误提示：The command is available only in Parallels Desktop for Mac Pro or Business Edition. (255)解决方法：右键Docker栏的PD图标，选择关于Parallels Desktop，看是否有Pro Edition的标识，如果没有，就是标准版的。①关闭虚拟机，退出PD②进入MAC系统的系统偏好设置，选择时间与日期，修改系统时间为2021年2月2号③然后启动 PD，运行虚拟机，继续试用④进入虚拟机后，你的PD版本会自动切换到专业版⑤最后把时间改回来。或者尝试：①在PD输入密钥的界面下，不要关闭窗口②进入MAC系统的系统偏好设置，选择时间与日期，修改系统时间为2021年2月2号③然后回到PD输入密钥的窗口，点然后点免费试用14天，你会有惊喜发现。④点继续试用，你的PD版本会自动切换到专业版⑤把时间改成正确时间。错误提示：Failed to get VM config: The virtual machine could not be found. The virtual machine is not registered in the virtual machine directory on your Mac. (255)解决方法：可能是虚拟机未装好，可以右键Dock栏，选择控制中心，查看虚拟机的状态，是否有安装好？或者是你的虚拟机名称并非 Windows 11，请关闭或者强行停止win11虚拟机，到PD控制中心重命名，注意大小写和空格。（Win10的标准名字是Windows 10，Win11的标准名字是Windows 11，Ubuntu的标准名字是Ubuntu Linux）。错误提示：Failed to start the VM: Unable to perform the operation because "Windows 11" is not stopped. This operation can be performed for stopped virtual machines only. (255)解决方法：虚拟机已在后台运行，可以手动运行PD，右键Dock栏的PD图标， 选择控制中心，查看虚拟机系统的运行状态，可以右键电源图标，选择关闭或者停止，然后重新运行延时工具即可。另外，如果你的虚拟机设置成融合模式，已经后台运行，重复运行延时工具也可能会有这个报错，建议关闭融合模式。错误提示：Aug 20 04:20:00 pdfmbootstrap[1131] : prlctl[1065]: Failed to initialize Parallels Desktop in unattended mode. This may be caused by ether corrupt installation or if you just installed Parallels Desktop. In order to initialize Parallels desktop ether: 1. Start Paralles Desktop by double-clicking to Parallels Desktop bundle, or 2. Run following initialization procedure from command line: sudo "/Applications/Parallels解决方法：虚拟机系统没有安装，建议全新安装虚拟机系统，如果曾经有安装虚拟机，可以导入进来，路径为/Users/你的用户名/Parallels文件夹里，双击pvm格式的虚拟机文件，可以自动导入。如果没有这个文件，则需要重新安装虚拟机。错误提示：Failed to start the VM: This product was activated for a limited period of time that has now expired. Purchase a new activation key (https:// www.parallels.com/buy-pdfm17-zh_CN/) to continue using Parallels Desktop. (255)解决方法：提示超出激活时间，需要购买激活密钥。若出现如图错误提示，或者类似的提示，请退出PD软件，到Mac电脑应用程序文件夹，把Parallels Desktop软件拖动到垃圾篓。然后自行更换其他可用版本，操作不会影响你的Windows虚拟机数据。另外建议禁用PD软件更新，方法：右键Dock栏的PD图标，选择偏好设置—通用，把检查更新设置成从不，把自动下载更新的勾去掉即可。错误提示：sh: /usr/local/bin/prlctl: No such file or directory (127)解决方法：当前安装的可能是 App Store 应用商店中的阉割版的，或者PD程序有损坏，请到官方网站下载或者寻找其他的版本下载。重新安装前先删除之前的PD程序：在Dock栏退出PD，在应用程序中把Parallels Desktop图标拖入到废纸篓。在「系统偏好设置—安全性和隐私中—通用」，在下方选择「仍要打开」允许这个程序即可。错误提示：安装程序无法自动安装 Virtual Machine Communication Interface Sockets (VSock)解决方法：安装kb4474419后重新再安装VMware Tools即可。下载地址
从x86的Mac迁移到ARM架构的m1 pro，这时候需要把原本的打印驱动迁移过去。方法如下：打印机的驱动程序文件位置：通常位于 /Library/Printers/vendor_name 中。还有位于 /Library/Printers/PPDs/Contents/Resources 中的支持 PPD。根据使用的打印机，其他供应商文件夹中可能有更多文件。恢复：位于 /Library/Preferences 中的文件 org.cups.printers.plist位于 /Library/Printers 中的文件 InstalledPrinters.plist位于~/Library/Preferences 中有几个文件，org.cups.PrintingPrefs.plist和com.apple.print.add.plist使用如下命令控制cups打印服务开关：sudo launchctl stop org.cups.cupsdsudo launchctl start org.cups.cupsd使用如下命令打开cups的web设置开关：cupsctl WebInterface=nocupsctl WebInterface=yes打开之后，可以通过http://localhost:631/ 访问cups的web设置。
如何修改 Mac 的打印比例缩放默认值为100%？
每次使用 macOS 的预览打印功能，都会自动按照纸张大小缩放内容，并且缩放总是很保守，经常97%比例，而不是保持100%原比例。缩放默认值这事儿还不归CUPS管，因为本质上是程序本身，也就是 Preview 预览程序自身决定的自动缩放。研究了一下，还是找到了修改的办法：首先，退出预览应用程序，在终端中输入以下内容，然后再次启动预览，即可。defaults write com.apple.Preview PVImagePrintingScaleMode 0 要还原此设置（仍然开启自动缩放），可以使用以下命令：defaults delete com.apple.Preview PVImagePrintingScaleMode 当然，也可以打开 ~/Library/Containers/com.apple.Preview/Data/Library/Preferences/com.apple.Preview.plist 手动添加如下值： PVImagePrintingScaleMode 0 以上方法适用于macOS 10.11以上。
在国内的网络环境下使用 Homebrew 安装软件的过程中可能会长时间卡在 Updating Homebrew 这个步骤。例：执行 brew install composer 命令~ brew install composer Updating Homebrew... # 如果碰到长时间卡在这里，参考以下 2 种处理方法 方法 1：按住 control + c 取消本次更新操作~ brew install composer Updating Homebrew... ^C按住 control + c 之后命令行会显示 ^C，就代表已经取消了 Updating Homebrew 操作。大概不到 1 秒钟之后就会去执行我们真正需要的安装操作了➜ ~ brew install composer Updating Homebrew... ^C==> Satisfying dependencies ==> Downloading https://getcomposer.org/download/1.7.2/composer.phar ... 这个方法是临时的、一次性的方法 2：使用 Alibaba 的 Homebrew 镜像源进行加速平时我们执行 brew 命令安装软件的时候，跟以下 3 个仓库地址有关：brew.githomebrew-core.githomebrew-bottles通过以下操作将这 3 个仓库地址全部替换为 Alibaba 提供的地址替换 / 还原 brew.git 仓库地址替换成阿里巴巴的 brew.git 仓库地址: cd "$(brew --repo)" git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git还原为官方提供的 brew.git 仓库地址 cd "$(brew --repo)" git remote set-url origin https://github.com/Homebrew/brew.git替换 / 还原 homebrew-core.git 仓库地址替换成阿里巴巴的 homebrew-core.git 仓库地址: cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git还原为官方提供的 homebrew-core.git 仓库地址 cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://github.com/Homebrew/homebrew-core.git替换 / 还原 homebrew-bottles 访问地址这个步骤跟你的 macOS 系统使用的 shell 版本有关系，所以先来查看当前使用的 shell 版本echo $SHELL # 如果你的输出结果是 /bin/zsh，参考?的 zsh 终端操作方式 # 如果你的输出结果是 /bin/bash，参考?的 bash 终端操作方式3.1 zsh 终端操作方式# 替换成阿里巴巴的 homebrew-bottles 访问地址: echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc source ~/.zshrc # 还原为官方提供的 homebrew-bottles 访问地址 vi ~/.zshrc # 然后，删除 HOMEBREW_BOTTLE_DOMAIN 这一行配置 source ~/.zshrc 3.2 bash 终端操作方式# 替换 homebrew-bottles 访问 URL: echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile source ~/.bash_profile # 还原为官方提供的 homebrew-bottles 访问地址 vi ~/.bash_profile # 然后，删除 HOMEBREW_BOTTLE_DOMAIN 这一行配置 source ~/.bash_profile
tcping是一款命令行程序，其操作类似于“ping”，但是它通过tcp端口工作，能够监听检测某个端口的状态和延时时间，默认是80端口，也可以指定其它端口。原作者是Eli Fulkerson。如何安装tcping1.首先安装homebrew安装tcping首先需要需要有 homebrew 环境（一款Mac OS平台下的软件包管理工具），如果已经安装则可以跳过本步骤。按Command+Space 后输入 Terminal 后，按回车启动终端。在终端中输入：ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null 之后按回车，如果需要输入密码，则输入密码，输入的密码不会被显示在屏幕上，输入完毕后直接按回车即可，然后等待命令行完成。2.通过homebrew安装tcping。安装好homebrew 环境后，在终端中输入：brew install tcping 回车后等待命令完成后tcping即可安装成功。tcping的用法及参数名称tcping - 通过建立到网络主机的连接来模拟tcp上的"ping" . 测量系统达到[SYN]，接收目标的[SYN] [ACK]和发送[ACK]的时间。 需要注意的是，最后一个ACK不包括在内-仅包括发送到发送端的时间。 概要tcping [-tdsvf46] [-i 间隔] [-n 次数] [-w 间隔] [-b n] [-r 次] [-j 深度] [--tee 文件名称] [-f] 目标 [端口] 描述tcping测量在其自身与远程主机之间执行TCP 3种握手（SYN，SYN/ACK，ACK）所需的时间。 不包括传出最终ACK的传输时间，仅包括将其丢弃所需的（最短）时间线缆在近端。这允许（SYN，SYN/ACK）的请求，响应时间近似于相当于ICMP。 命令参数-4 建议使用IPv4 -6 优先使用IPv6 -t 连续ping，直到通过control-c停止 -n count 发送ping，然后停止。默认值4。 -i 间隔 在两次ping之间等待_interval_秒。默认值1.允许使用小数。 -w 间隔 等待_interval_秒以获取响应。默认值2。允许使用小数。 -d 在每条回显中显示日期和时间 -f 除了建立连接外，还强制发送至少一个字节。 -g 计数 在_count_次ping失败后放弃。 -b 类型 启用蜂鸣声。 “ -b 1”将“向下”发出蜂鸣声。如果主机启动了，但现在没有启动，则发出哔声。 “ -b 2”将“响起”哔声。如果主机掉线了，但现在却掉线了，请发出哔声。 “ -b 3”将在“更改”时发出蜂鸣声。如果主机是一种方式，但现在是另一种方式，则发出哔声。 “ -b 4”将“总是”发出哔声。 -c 仅在更改的状态下显示输出 -r 计数 每次计数时，我们都会为主机执行新的DNS查找，以防主机更改。 -s 成功后立即退出。 -v 打印版本并退出。 -j 计算抖动。抖动定义为上次响应时间与历史平均值之间的差。 -j s深度 与-j一样计算抖动，但指定了可选的_depth_参数。如果指定_depth_ tcping将 使用先前的_depth_值来计算滚动平均值。 --tee _文件名_ 输出重复到指定的_filename_。Windows仍不能依赖于具有有用的命令行 环境。* nix伙计们，不要嘲笑我。 - append 使用--tee时，追加而不是覆盖输出文件。 - file 将“目标”选项视为文件名。该文件成为目的地的来源，并在 逐行 某些选项在此模式下不起作用，并且不会保留统计信息。 destination DNS名称，IP地址或（在“ http”模式下）URL。 不要在“ http”模式下指定协议（“ http：//”）。也不要通过“：port”语法指定服务器端口。 例如：“ tcping http://www.elifulkerson.com:8080/index.html”将失败 请使用以下样式：“ tcping www.elifulkerson.com/index.html 8080”。 port 一个数字TCP端口，从1到65535。如果未指定，则默认为80。 --header 包括带有命令行参数和时间戳的标头。如果使用--tee，则暗含标题。 HTTP模式选项-h 使用“ http”模式。在http模式下，我们将尝试获取指定的文档并返回其他值，包括 文档的大小，http响应代码，kbit / s。 -u 在“ http”模式下，在每个输出行上包括目标URL。 --post 在http模式下使用POST而不是GET。 --head 在http模式下使用HEAD而不是GET。 --get 为了简化起见，可以调用“ http”模式。 --proxy-server _proxyserver_ 连接到_proxyserver_来请求URL，而不是URL本身所指示的服务器。 --proxy-port _port_ 指定代理服务器的数字TCP端口。默认为3128 --proxy-credentials 用户名：密码 指定一个用户名：密码对，作为“代理授权：基本”标头发送。 返回值如果所有ping成功，则tcping返回0；如果ping零成功，则返回1；对于混合结果，返回2。
起因最近有两台群晖远程异地文件同步的需求，原计划是打算同步共享文件夹 “Docs”。一开始先想到的是群晖自家的 Cloud Station Server套件，于是开始测试：群晖A安装Cloud Station Server套件，选中了 “Docs”的同步；群晖B安装Cloud Station ShareSync，选中群晖A中的“Docs”。设置完成后，发现群晖A的 Cloud Station Server会试图扫描整个共享文件夹 “Docs”（是由图纸图片文件组成约8TB的数据），导致Cloud Station Server的数据库和日志暴增，最终无法响应。之后在群晖官网找到了 Cloud Station Server的技术白皮书，发现现有的数据量已经远远超出了他们所设计的性能范围。之后又无奈的测试了开源的同步软件Syncthing：功能看起来很好，跑起来发现问题还是挺多的，主要还是数据量太大造成的，不同的目录会经常出现不同的权限错误，扫描反复中断，并且内网穿透也是时断时续，看来还是不适合在生产环境中使用。于是只能退而求其次，再次回到 Cloud Station Server的方案，打算只同步共享文件夹 “Docs”的子文件夹"Sync（约50GB）"，可惜新的问题又出现了：因为群晖A的Cloud Station Server只能选择拟同步的“共享文件夹”（不能选择子文件夹），但在群晖B的Cloud Station ShareSync的高级设置中，可以在拟同步的文件夹中指定同步子文件夹"Sync1"）。设置完成后，发现群晖A的Cloud Station Server仍然试图扫描整个“Docs”共享文件夹，还是会导致数据库和日志暴增，最终无法响应。于是联系了群晖技术支持，答复如下：“ Cloud Station Server 是一定要扫描整个共享文件夹，这是当前的设计。如果是双向同步，除了Cloud Station Server，没有其他替代的同步方案。建议新建一个共享文件夹，然后将这50GB的文件放进去，单独创建任务进行同步。”这种答复，Mmm...如果新建共享文件夹然后单独创建同步任务，是不现实的，因为除了权限问题，还涉及到变更路径，多出一个共享文件夹也会影响用户习惯。曲线救国后来我想到一个曲线救国的方式，使用mount —bind命令，达到欺骗 Cloud Station Server 的目的，避免对整个“Docs”共享文件夹的扫描的目的。实现方法如下：新建一个“FakeSync”共享文件夹；然后使用mount —bind命令，把“FakeSync”共享文件夹和真正要同步的子文件夹“Docs/Sync”连接起来。打开ssh，输入：sudo mount --bind /volume1/FakeSync/ /volume1/Docs/Sync，实现所有对后一个目录的访问其实都是对前一个目录的访问；在群晖A的Cloud Station Server中创建任务，指定同步“FakeSync”；群晖B的Cloud Station ShareSync中指定群晖A的“FakeSync”；再用VI到/etc/rc.local中添加一遍 sudo mount --bind /volume1/FakeSync/ /volume1/Docs/Sync，这样才能开机自动挂载，避免重启之后同步失效。结语对中小企业，使用群晖入门级的企业存储产品是相对有性价比的方案。群晖的技术支持不错，但是解决不了太多问题，你就是反馈了某些需求，未来也大概率不能解决；DSM系统愿景是美好的，缺点也有不少，比如没有ACL同步、用户和用户组的同步，用户列表和权限不能以表格形式导出（虽然可以备份用户配置然后再用数据库编辑软件打开）等等。现有的功能，实际用下来也或多或少有些问题（不知道未来的DSM7是否会有改善）；目前没有免费软件或者开源软件能够真正稳定地实现海量数据（10TB以上）的同步。至于商用软件，可能会有更好的，不太了解。
海康威视 Hikvision iVMS-4200 Mac 监控客户端切换中文语言的方法
iVMS-4200客户端是海康威视推出的一款与嵌入式网络监控设备配套使用的应用软件。它可与DVR、NVR、IPC、IPD、DVS、网络存储设备、报警设备、门禁设备、可视对讲设备等配套使用，提供网络服务（预览、回放、云台等操作），提供灵活、多样的部署方案，满足中、小型项目中各种不同环境的需求。偶尔会使用 Mac 连接带一台海康威视的NVR，在 Mac 下直接使用浏览器访问这台NVR，又没有可用的浏览器插件。很早以前就找到了这个叫 iVMS-4200 的客户端。有意思的是，国内的海康威视网站并没有提供 iVMS-4200 for Mac的客户端下载（海康可能认为国内没什么人用 Mac），最早我给海康威视的客服打过电话，客服通过邮件发给过我旧版本的iVMS-4200 for Mac 客户端，而且是中文的。随着 Mac 系统的升级（MacOS 10.15 Catalina 之后），产生了大面积的应用兼容性问题，首先是32位的应用不再支持，直接导致v2.0.0.10版本不可用，后来释出的64位版本会导致CPU风扇狂转、网络传入传出无法选择允许等问题，仍然是不可用状态。之后我通过 Web 监控程序监控了海康威视国际网站的软件支持更新，最近，他们释出了针对 Mac 系统监控客户端的更新版本 iVMS-4200 for Mac V2.0.0.12。说实话，MacOS 10.15都发布了这么长时间，海康威视的客户端团队升级周期也真是够久。新版本实际没有大更新，只是修复了与操作系统的兼容问题，经测试已经正常可用。但在软件的GUI中，并没有切换中文英文语言，直接安装使用的话，默认则是英文版本，启动后，会提示如下错误：Error Code LibDAG dylib [5026]. (Mismatched device language and client language.)原因也很简单，NVR 系统语言是中文的，而客户端的语言是英文的，客户端又敏感的对语言进行了判断，直接导致无法连接到 NVR。于是我把安装好的iVMS-4200包打开，把包中的文件全部翻了一遍，发现里面是有中文资源的（有且只有中文和英文），甚至还有中文的使用手册。所以最终找到了解决办法：安装好最新版本之后，直接跳转到（或者在应用程序中的iVMS-4200图标上鼠标右键，显示包内容）/Applications/iVMS-4200.app/Contents/MacOS/，之后用文本编辑器修改Setup.xml：<?xml version='1.0' encoding='UTF-8'?> <Configs Version="2.7.0.1"> 0 将Translator的值自0修改为1，其他值不变，保存即可。再次启动 iVMS-4200客户端，就会发现GUI已经变成中文，这时候只需要重新添加NVR到客户端中，即可正常使用。
内置读卡器卡槽触点有问题，是老款 Macbook Pro 的通病了。以前遇到这个问题解决过，很久没用了又忘记，再次搜索找到一篇，转载备忘。无奈之下，只能 google。在官网的论坛上发现了一篇比较扯的帖子：https://discussions.apple.com/thread/2166984说是要把拨片拨到 lock 和 unlock 中间，于是我照着干了,发现果然可写了。为了探究背后的原因，我研究了下 SD 卡 lock 开关的原理：In fact, the lock switch has no bearing on the internals of the SDcard at all. If you rip an old SD card apart you will see that it isnothing more than a little plastic slider that rides in a groove, anddoes not affect the electronics of the card itself.Its position is sensed by a small switch -- often just a spring-loadedlittle bit of metal -- inside the card slot on the card reader. Whenthe switch is in the "lock" position it engages the switch in thereader and it tells your computer (or whatever device), "Hey, thisthing is locked, don't write to it."It is 100% up to the manufacturer of the reader to ensure that thelock functionality works and is supported. Many cheap Chinese knockoffcard readers, especially those that do not fully encapsulate the cardand leave it sticking part or most of the way out of the slot, don'tsupport the lock switch at all. You can leave the switch in whateverposition you want and it will have no effect.按照这个说法，macbook 的 lock 触点比较奇葩，需要把拨片放到中间才能避免 lock 。
之前一直通过 macOS 连接到 Windows Server 2012 的 Samba 上正常使用，自从系统自动升级到macOS High Sierra 10.13.2 后，操作连接的共享时 Finder 反复卡死提示未响应，然后连软重启都无效。实在是不能忍受。本以为是和上次文件夹花屏一样的问题，“.DS_Store” 文件坏掉了，结果删除了共享中所有的 .DS_Store 文件仍然不行。于是怀疑是否是10.13.2的新系统版本对 Samba 做了版本更新导致的新 Bug，并尝试在 Windows Server 2012 中尝试关闭SMBv3。Windows 8 和 Windows Server 2012 引入了新的 Set-SMBServerConfigurationWindows PowerShell cmdlet。 通过此 cmdlet，你可以在服务器组件上启用或禁用 SMBv1、SMBv2 和SMBv3 协议。注意 在 Windows 8 或 Windows Server 2012 中启用或禁用 SMBv2 时，也会启用或禁用 SMBv3。之所以会出现此行为是因为这些协议共享同一个堆叠。运行 Set-SMBServerConfiguration cmdlet 后，无须重启计算机。 SMB v2/v3检测：Get-SmbServerConfiguration | Select EnableSMB2Protocol禁用：Set-SmbServerConfiguration -EnableSMB2Protocol $false启用：Set-SmbServerConfiguration -EnableSMB2Protocol $true在Windows Server 2012 的 PowerShell 中执行Set-SmbServerConfiguration -EnableSMB1Protocol $false命令将会立即生效。回到 macOS 中尝试重新连接Samba共享，在命令行中执行smbutil statshares -a查看当前共享连接状态，已经变成了SMB v1，然后在Finder中操作，果不其然，不再卡死。毕竟把 Windows Server 2012 服务器的Samba 设置为 1.0 版本非常不安全。但又不能仅屏蔽SMBv3。所以只好动手将 macOS 的 Samba 协议强制降低到SMBv2上（系统会出于安全角度默认自协商选用最高版本的协议进行连接）。于是在 macOS 命令行中执行：sudo sh -c "echo '[default]' >> /etc/nsmb.conf; echo 'protocol_vers_map=2' >> /etc/nsmb.conf" 此处的2代表设置为SMBv2，1就等于SMBv1（低版本的 Mac 系统曾经是使用“smb_neg=smb2_only”，现在失效了）。这会在 /etc 目录中添加一个 nsmb.conf 文件，系统检测到这个文件后就会默认通过 SMBv2 对外连接。修改后需要重启才能生效。（如果需要回到默认连接，只需要rm /etc/nsmb.conf即可）。