Skip to content

Windows 知识摘要

Electron 应用分析

  • electron的 wss 经常启用证书绑定(Pinning)
进程启动时可以通过如下参数来关闭: --ignore-certificate-errors
  eg. 目标: app.exe --ignore-certificate-errors
  • electron的开发者工具
- dev 模式,快捷键呼出: win下的快捷键是:ctrl+shift+i,mac下的快捷键是:alt+花+i。
- release 模式,快捷键可能不生效,需要想办法执行mainWindow.webContents.openDevTools()即可。

Global 和 Local 对象

如 共享内存、命名管道 等,会通过 Global\ 和 Local\ 前缀来区分是全局对象和当前用户对象。需要注意的是 Session 0 不属于任何用户,是系统会话,通常是系统服务运行的会话。

具体如下表所示:

创建者名称实际位置
Session 0 服务Local\ABC\Sessions\0\BaseNamedObjects\ABC
Session 1 用户Local\ABC\Sessions\1\BaseNamedObjects\ABC
任意 SessionGlobal\ABC\BaseNamedObjects\ABC
  • 注: 服务中创建的 Local 对象,在其他会话上有可能能通过``Global```来访问。因为,服务创建的对象可能会被映射到\BaseNamedObjects\对象空间里

Node 版本管理工具

nvm 或 Volta

调试

Windbg

  • 配置symbols:
    D:\symbols\my; srv*D:\symbols\sys*https://msdl.microsoft.com/download/symbols
  • 常用命令
    .symopt+0x4
    !sym noisy

Details About The Breakpoint

文件资源管理器(Windows)

环境变量

  • 注册表:
    HKEY_LOCAL_MACHINE : SYSTEM\CurrentControlSet\Control\Session Manager\Environment
    HKEY_CURRENT_USER  : Environment
  • 通知系统刷新:
    SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)L"Environment", SMTO_ABORTIFHUNG, 5000, &dwResult);

文件预览功能

文档:
     [中文] https://learn.microsoft.com/zh-cn/windows/win32/shell/preview-handlers
     [英文] https://learn.microsoft.com/en-us/windows/win32/shell/preview-handlers
示例:
     https://learn.microsoft.com/zh-cn/windows/win32/shell/samples-recipepreviewhandler

VMware 虚拟机

常用命令

  • 重启
"C:\VMware\VMware Workstation\vmrun.exe" reset "D:\vmware\win10-x64.vmx" hard

Vmware 中 win7 安装 vmware-tools

  • 问题1: “安装VMware Tools”选项为灰色,无法点击安装

    关闭虚拟机Windows7,查看虚拟机设置,将软盘“移除”掉。
    再次进入虚拟机Windows7,“安装VMware Tools”恢复正常。
  • 问题2: 安装过程提示驱动签名问题

    错误提示“安装程序无法自动安装 Virtual Machine Communication Interface Sockets(VSock)驱动程序。必须手动安装此驱动程序”

    本质原因是,缺少 SHA2 补丁,只需要依次安装相应补丁即可

    // 下载并手动安装服务堆栈更新 (SSU)(KB4490628)
    https://www.catalog.update.microsoft.com/Search.aspx?q=kb4490628
    
    // 下载并手动安装SHA-2更新 (KB4474419)
    https://www.catalog.update.microsoft.com/Search.aspx?q=kb4474419
    
    // 解决原版Windows7安装SHA-2补丁时提示“此更新不适用于您的计算机”:先安装 sp1 补丁
    https://www.catalog.update.microsoft.com/Search.aspx?q=kb976932

Git 常用操作

合并多次commit为一次提交

# 查看提交历史
git log --oneline

# 将最近的 N 次提交合并(例如最近 3 次),输入:
git rebase -i HEAD~3

# 编辑交互信息:
终端会打开默认文本编辑器(通常是 Vim)。你会看到:
pick a1b2c3d 提交信息1
pick e4f5g6h 提交信息2
pick i7j8k9l 提交信息3

保留第一行(最旧的提交)为 pick。
将其余行修改为 squash 或 s(合并到上一个提交)

pick a1b2c3d 提交信息1
s e4f5g6h 提交信息2
s i7j8k9l 提交信息3

# 保存并退出:
在 Vim 中,按 Esc,输入 :wq,然后回车保存。

# 修改提交信息:
编辑器会再次弹出,允许你合并和修改提交消息(commit message)。修改后保存退出即可

Delete Submodules

Step 1: Run the following command to stop tracking the submodule:
	git submodule deinit -f <submodule_path>
	
Step 2: Delete the submodule directory from your working tree:
	rm -rf <submodule_path>

Step 3: Remove Submodule Configuration
	First, delete the entry related to the submodule from the .gitmodules file
	Next, remove the submodule configuration from .git/config

Step 4: Remove the submodule metadata stored in .git/modules:
	rm -rf .git/modules/<submodule_path>

Step 5:  Remove Submodule Caches:
	git rm --cached <submodule_path>

Best Practices
	Verify that all references to the submodule are removed by
        checking .gitmodules, .git/config, and .git/modules.

Visual Studio

在老项目升级到 Visual Studio 2022 时

老项目升级到 2022 时,遇到奇怪的且大量的语法错误时,可以试试看:

项目 -> 配置属性 -> C/C++ -> 语言 -> 符合模式 : 否(/permissive)

在 Visual Studio 中禁止生成 PDB

可以在 “属性-> 链接器 -> 命令行 ” 中输入 /PDBPATH:NONE 或 /DEBUG:NONE

在 Visual Studio 中使用 Property Sheet 自定义宏

  1. 打开Property Manager窗口:

菜单View->Property Manager或View->Other Windows->Property Manager。可看到如下界面:

Visual Studio - Property Manager

  1. 在 Property Manage 窗口选中你想要的配置如“Debug|Win32”,或,“TestProject” 进行全选,然后右键选“Add New Property Sheet...” 或着 “Add Existing Property Sheet...”

Visual Studio - Property Manager

操作完成后,可以在配置下看到新增的属性配置(默认名字为:PropertySheet,对应的文件为:PropertySheet.props)

  1. 双击新增的属性配置,即可看到下述页面,在其中通过"添加宏"即可新增自定义的宏:

Visual Studio - Property Manager

  1. 可以尝试修改 "VC++目录" 探索试试看

QA: 禁止win10更新的一种方法

经历 windows 自动升级、重启,然而并没有启动成功只是关机了之后,我做出了一个艰难的决定... 禁用自动更新。

然而,没有发现容易操作的方法,直到发现它: win_disable_os_update

QA: Win11 安装跳过联网激活 (使用本地账户登录)

第一步,断网

第二步,有些系统安装时,在 【让我们为你连接网络】步骤,没有【我没有Internet连接】选项

可以通过如下方法,打开这个选项 :     
    1. 按下键盘上Shift+F10(台式机)或者是 Fn+Shift+F10(笔记本)快捷键调出CMD命令窗口
    2. 输入命令 oobe\bypassnro.cmd 后回车
然后会重启系统

最后,选择 【我没有Internet连接】-> 【继续执行受限设置】就可以使用本地账号登陆系统了

QA: 远程连接主机报错:密码认证无效

  • 问题:
    • 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa : forceguest=1(默认值0)后, Mac 下使用 Windows App 远程连接主机报错:密码认证无效
  • 处理:
  • 原因:
    • 0 = 经典 (Classic) - 默认值: 从网络或远程连接到该计算机的本地帐户,以该用户的实际身份(例如 Administrator 或具体用户名)进行身份验证。
    • 1 = 仅来宾 (Guest only): 从网络或远程连接到该计算机的所有本地帐户,强制将其实际身份剥夺并重新映射/降级为 Guest (来宾) 帐户。