在 Windows 10 中重新启用 Windows 照片查看器

虽然 Windows 10 不再默认提供Windows 照片查看器,但它依然隐藏在系统中,只需要通过一些简单的操作就能重新启用。

步骤一:打开注册表编辑器

  1. 按下 Win + R 组合键,调出运行对话框。
  2. 在对话框中输入 regedit,然后按下 Enter 键或点击“确定”按钮。
  3. 如果系统弹出用户账户控制(UAC)提示,选择“是”以允许注册表编辑器进行更改。

步骤二:导航到指定路径

在注册表编辑器中,按照以下路径导航:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations

这段路径指定了 Windows 照片查看器的文件关联设置,在这里手动添加对图片文件格式的支持。

步骤三:添加文件关联

  1. 在右侧的空白区域,右键点击,选择 “新建” -> “字符串值”
  2. 将新建的字符串值命名为文件扩展名。例如,若要为 JPG 文件添加关联,输入 .jpg
  3. 双击刚刚创建的字符串值,并将其数值数据设置为 PhotoViewer.FileAssoc.Tiff。这个数值告诉系统将该文件格式与 Windows 照片查看器关联。

  4. 重复上述步骤,为其他常见的图片格式(如 .jpeg.png.bmp.gif 等)创建字符串值,并同样设置其数据为 PhotoViewer.FileAssoc.Tiff

步骤四:设置默认应用

完成注册表的修改后,还需要将 Windows 照片查看器设置为图片文件的默认打开方式:

  1. 找到一个图片文件(如 .jpg 文件)。
  2. 右键点击该文件,并选择 “打开方式” -> “选择其他应用”
  3. 在弹出的列表中,向下滚动查找并选择“Windows 照片查看器”。
  4. 勾选“始终使用此应用打开 .jpg 文件”以将其设为默认应用。
  5. 点击“确定”。

如何在 macOS 安装 `.cer` 证书文件

  1. 下载证书:
    • 确保已经下载了 XXX-CA.cer 文件。
  2. 打开“钥匙串访问”应用:
    • 在 “聚焦搜索” 中搜索 钥匙串访问,或从“应用程序” -> “实用工具”中打开“钥匙串访问”。
  3. 导入证书:
    • 在“钥匙串访问”窗口中,点击左上角的“文件”菜单,然后选择“导入项目…”。找到并选择你下载的 XXX-CA.cer 文件。
  4. 选择钥匙串:
    • 系统会提示选择将证书存储到哪个钥匙串中。选择将其存储在“系统”钥匙串中。
  5. 调整证书信任设置:
    • 证书导入后,需要设置信任级别。找到刚刚导入的证书(通常会在“系统”钥匙串中显示),双击它以打开证书详细信息。
    • 展开“信任”部分,在“使用此证书时”下拉菜单中选择“始终信任”。
    • 关闭窗口,系统可能会要求输入管理员密码来确认更改。

如何在 macOS 下查询应用的服务器地址

本文将介绍如何在 macOS 下查询应用的服务器地址。

一、通过netstat命令查看网络连接

netstat 是一个非常有用的网络工具,它可以显示当前所有的网络连接状态。

运行netstat命令:

netstat -an | grep ESTABLISHED
  • 这条命令会显示当前所有已建立的网络连接。通过显示的 IP 地址和端口信息,你可以推测出特定应用连接的服务器地址。

二、通过lsof命令查看特定应用的网络连接

lsof(List Open Files)命令可以直接查看某个特定应用程序的网络连接。

sudo lsof -i -n -P | grep [应用程序名称]
  • [应用程序名称] 替换为你要查询的应用程序名称。这会列出该应用的所有网络连接,显示其连接的 IP 地址和端口。

在 macOS zsh 下删除 .tgz 文件外的所有文件和文件夹

在日常运维工作中,我们经常需要清理目录中的文件或文件夹,这次我只想保留 .tgz 文件,而删除其他所有的内容。

在 macOS 默认的 zsh 环境中,这个操作和 bash有一些不同的实现方式。

步骤

1. 启用 zsh 的扩展通配符功能

zsh 提供了一些强大的通配符功能,但需要先启用它们。可以通过以下命令启用扩展的通配符匹配:

setopt extended_glob

2. 使用 rm 命令删除文件和文件夹

rm -rf -- ^*.tgz

3. 命令详解

  • setopt extended_glob:启用 zsh 的扩展通配符,使我们可以使用更强大的匹配模式。
  • ^*.tgz^ 用于取反匹配,表示排除所有 .tgz 文件之外的其他文件和文件夹。
  • rm -rf:递归删除所有匹配的文件和文件夹。
  • --:标志命令选项的结束,避免路径被解释为选项。

4. 注意事项

  1. 操作慎重rm -rf 命令非常危险,执行时请务必确认路径和匹配模式正确无误,避免误删重要文件。

  2. 适用范围:上述方法适用于 zsh 环境。

备选方案

如果不想启用 zsh 的扩展通配符,或者希望在 bashzsh 环境下都能通用,可以使用 find 命令:

find /path/to/app -mindepth 1 ! -name "*.tgz" -exec rm -rf {} +

这种方式可以更加灵活地在各种 shell 中使用,特别是在复杂的目录结构中。


解决 Python Selenium 读取含颜文字文件时的 ChromeDriver 错误

今天在使用 Python Selenium 自动化浏览器操作的过程中,遇到了一个处理包含颜文字或其他非标准字符的错误。

问题描述

我正在编写一段 Python Selenium 代码来自动化填充网页上的文本框。我们需要从一个文件中读取文本,并将其输入到页面的 textarea 中。然而,当文件中包含颜文字或其他非 Basic Multilingual Plane (BMP) 字符时,程序可能会抛出如下错误:

Message: unknown error: ChromeDriver only supports characters in the BMP
(Session info: chrome=122.0.6261.94)

这个错误是由于 ChromeDriver 目前只支持 BMP 范围内的字符。BMP 是 Unicode 的一个子集,包含了从 U+0000U+FFFF 的字符,而一些特殊字符(如颜文字、部分表情符号等)超出了这个范围,位于 Supplementary Multilingual Plane (SMP) 或其他Plane中。

错误代码示例

首先,我们来看一下可能导致错误的代码示例:

import os
from selenium import webdriver

# 初始化 WebDriver
driver = webdriver.Chrome()

# 假设我们要输入文本到一个textarea中
last_textarea = driver.find_element(By.ID, "textarea_id")

# 读取文件内容
text_to_enter = ""
file_path = "path/to/your/file.txt"
if os.path.exists(file_path):
    print(f"打开文件 {file_path}")
    with open(file_path, 'r', encoding='utf-8') as file:
        text_to_enter = file.read()
else:
    print(f"文件 {file_path} 不存在")

# 将内容输入到textarea中
last_textarea.send_keys(text_to_enter)
print("输入: " + text_to_enter)

当文件中包含超出 BMP 范围的字符时,send_keys 方法会抛出上述错误。

解决方案

1. 过滤掉非 BMP 字符

最简单的方法是过滤掉所有不在 BMP 范围内的字符。这可以通过 Python 的字符编码范围来实现:

def filter_non_bmp(text):
    return ''.join(c for c in text if c <= '\uFFFF')

# 读取文件内容并过滤非BMP字符
text_to_enter = ""
file_path = "path/to/your/file.txt"
if os.path.exists(file_path):
    print(f"打开文件 {file_path}")
    with open(file_path, 'r', encoding='utf-8') as file:
        text_to_enter = file.read()
    text_to_enter = filter_non_bmp(text_to_enter)
else:
    print(f"文件 {file_path} 不存在")

# 将过滤后的内容输入到textarea中
last_textarea.send_keys(text_to_enter)
print("输入: " + text_to_enter)

这段代码会移除所有不在 BMP 范围内的字符,从而避免 ChromeDriver 抛出错误。

2. 替换非 BMP 字符

如果我们希望保留文本的完整性,而不是直接删除字符,可以考虑将非 BMP 字符替换为一些替代字符或转义符:

def replace_non_bmp(text, replacement='�'):
    return ''.join(c if c <= '\uFFFF' else replacement for c in text)

# 读取文件内容并替换非BMP字符
text_to_enter = ""
file_path = "path/to/your/file.txt"
if os.path.exists(file_path):
    print(f"打开文件 {file_path}")
    with open(file_path, 'r', encoding='utf-8') as file:
        text_to_enter = file.read()
    text_to_enter = replace_non_bmp(text_to_enter)
else:
    print(f"文件 {file_path} 不存在")

# 将替换后的内容输入到textarea中
last_textarea.send_keys(text_to_enter)
print("输入: " + text_to_enter)

在这个示例中,我将所有非 BMP 字符替换为一个占位符


在 Windows 中设置定时任务并查看系统运行时间和信息

一、在 Windows 中设置定时任务

  1. 打开任务计划程序
    • Win + R,输入 taskschd.msc,然后按回车,或者通过“控制面板” > “系统和安全” > “管理工具” > “任务计划程序”来打开。
  2. 创建基本任务
    • 在任务计划程序窗口的右侧,点击“创建基本任务…”,为任务命名(例如“定时启动程序”),然后点击“下一步”。
  3. 设置任务触发器
    • 选择触发任务的频率(例如每日、每周等),然后点击“下一步”。根据需要设置具体的日期和时间。
  4. 设置任务操作
    • 在“操作”选项卡中,选择“启动程序”,然后点击“下一步”。点击“浏览”,找到要执行的快捷方式文件(.lnk 文件),并选择它。
  5. 完成任务设置
    • 查看所有设置,确保无误后点击“完成”。
  6. 测试任务
    • 在任务计划程序中找到刚创建的任务,右键点击任务名称,选择“运行”以测试任务是否正常执行。
  7. 设置权限
    • 任务计划程序中运行 .bat 文件时,报错 “Access is denied” 通常是由于权限或配置问题。可以右键任务,选择 属性,在 常规 标签中,勾选 “以最高权限运行”

例如,我设置的一个自动重启定时任务

image-20240823上午112430042

image-20240823上午110748238

二、查看 Windows 系统的运行时间

在 Linux 中,uptime 命令可以显示系统的运行时间。在 Windows 中,可以通过以下几种方法来查看当前机器的运行时间:

  1. 通过任务管理器查看
  • Ctrl + Shift + Esc 打开任务管理器,点击“性能”选项卡,选择左侧的“CPU”。在右侧窗口中,“上次启动时间”,这个时间表示计算机的运行时间。
  1. 通过命令提示符查看
    • Win + R,输入 cmd,然后按回车。在命令提示符中输入以下命令并按回车:
      systeminfo | find "系统启动时间"
      
    • 这会显示系统的启动时间。
  2. 通过 PowerShell 查看
    • Win + R,输入 powershell,然后按回车。输入以下命令并按回车:
      (get-date) - (gcim Win32_OperatingSystem).LastBootUpTime
      
    • 这将显示系统自启动以来的运行时间。
  3. 通过系统信息查看

    • Win + R,输入 msinfo32,然后按回车。在打开的“系统信息”窗口中,查找“系统摘要”部分的“系统启动时间”。