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 |
| 任意 Session | Global\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
- Reference
文件资源管理器(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-recipepreviewhandlerVMware 虚拟机
常用命令
- 重启
"C:\VMware\VMware Workstation\vmrun.exe" reset "D:\vmware\win10-x64.vmx" hardVmware 中 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 自定义宏
- 打开Property Manager窗口:
菜单View->Property Manager或View->Other Windows->Property Manager。可看到如下界面:

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

操作完成后,可以在配置下看到新增的属性配置(默认名字为:PropertySheet,对应的文件为:PropertySheet.props)
- 双击新增的属性配置,即可看到下述页面,在其中通过"添加宏"即可新增自定义的宏:

- 可以尝试修改 "VC++目录" 探索试试看
QA: 禁止win10更新的一种方法
经历 windows 自动升级、重启,然而并没有启动成功只是关机了之后,我做出了一个艰难的决定... 禁用自动更新。
然而,没有发现容易操作的方法,直到发现它: 
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 (来宾) 帐户。
