Windows
Linux启动进程时传入一个字符串数组作为参数,
而Window的CreateProcess, ShellExecute, ShellExecuteEx都只支持传入一个字符串作为参数.
这意味着需要处理参数中的特殊字符, 在一些情况下这会变得特别棘手, 真是烂完了.
而Window的CreateProcess, ShellExecute, ShellExecuteEx都只支持传入一个字符串作为参数.
这意味着需要处理参数中的特殊字符, 在一些情况下这会变得特别棘手, 真是烂完了.
微软官方的Win32 API元数据生成工具.
微软官方的Rust语言的Windows API绑定.
符合Rust的所有权规则, 零成本抽象.
Win32 API被视为unsafe代码.
WinRT API被视为safe代码.
WinRT API被视为safe代码.
文档: https://microsoft.github.io/windows-docs-rs/doc/windows/index.html
crate feature查询: https://microsoft.github.io/windows-rs/features/
crate feature查询: https://microsoft.github.io/windows-rs/features/
微软官方的C#语言的Win32 P/Invoke代码按需生成器.
Windows每个磁盘的默认卷影存储只有300MB, 这导致备份在稍高IOPS的情况下都无法正常完成,
并在系统事件里留下以下日志:
并在系统事件里留下以下日志:
The shadow copies of volume C: were deleted because the shadow copy storage could not grow in time解决方案是通过vssadmin程序将卷影存储设置为更大的值, 例如:
- 无限制:
vssadmin resize shadowstorage /for=c: /on=c: /maxsize=unbounded
实践表明, 设置为无限可能过大了, 会影响使用VSS的软件的速度, 甚至导致写入类I/O请求长时间冻结. - 百分比:
vssadmin resize shadowstorage /for=c: /on=c: /maxsize=20% - 固定值:
vssadmin resize shadowstorage /for=c: /on=c: /maxsize=5G
可以在
里找到
系统设置/更新和安全/备份 或 控制面板/系统和安全/备份和还原(Windows 7)里找到
备份和还原(Windows 7) 功能.点击"创建系统映像"或者"设置备份"(只需要勾选
后者与前者的区别在于可以将备份设置为自动执行的计划任务, 但由于备份对系统运行速度有明显影响, 不建议这么做.
包括驱动器 EFI 系统分区, C:的系统映像)进行备份.后者与前者的区别在于可以将备份设置为自动执行的计划任务, 但由于备份对系统运行速度有明显影响, 不建议这么做.
系统映像并不能直接在操作系统里进行还原, 因此"备份和还原"在备份之后仍会显示找不到此计算机的备份.
首先要进入Windows RE的高级启动界面.
有3种方法:
- 1.在
系统设置/更新和安全/恢复里找到高级启动, 通过立即重新启动进入Windows RE的高级启动界面. - 2.按住Shift键重启计算机.
- 3.连续两次在Windows启动过程中断开电源来手动触发它.
在进入高级启动界面后, 依次选择
在一些计算机上, 可能还需要先点击一次
如果Windows RE不能使用, 在高级选项里会找不到
疑难解答(重置你的电脑或查看高级选项), 高级选项, 系统映像恢复.在一些计算机上, 可能还需要先点击一次
查看更多恢复选项.如果Windows RE不能使用, 在高级选项里会找不到
系统映像恢复, 此时需要借助系统安装盘或恢复光盘才能正常显示.进入恢复程序后, 可能会提示无法找到映像文件, 如果没有用密钥恢复备份盘, 就会遇到这个情况, 因为备份盘不可访问.
对于想要通过密码解锁驱动器, 或者之前不小心点了跳过的人, 在该界面按下Shift+F10可以打开命令提示符,
通过命令解锁BitLocker驱动器:
对于想要通过密码解锁驱动器, 或者之前不小心点了跳过的人, 在该界面按下Shift+F10可以打开命令提示符,
通过命令解锁BitLocker驱动器:
# 查看有关支持BitLocker的卷的信息(盘符可能和操作系统内不同)manage-bde -status# 使用密码解锁卷(将D:替换成需要解锁的驱动器)manage-bde -unlock D: -pw解锁完BitLocker驱动器后, 在用户界面点击
接下来按照提示即可完成系统映像的恢复.
下一步, 再点击 上一步 即可重新搜索系统映像, 此时应当能够搜索到对应的系统映像.接下来按照提示即可完成系统映像的恢复.
还原使用BitLocker的系统盘后可能会遇到这个问题:
重新开启系统盘以外的固定驱动器的自动解锁功能时, 会弹出"数据错误(循环冗余检查)".
这是因为位于系统盘上的用于自动解锁的外部密钥会在还原后无法使用.
重新开启系统盘以外的固定驱动器的自动解锁功能时, 会弹出"数据错误(循环冗余检查)".
这是因为位于系统盘上的用于自动解锁的外部密钥会在还原后无法使用.
用管理员权限打开PowerShell, 执行以下命令.
# (可选)查询固定驱动器D相关的外部密钥# 如果遇到了"数据错误(循环冗余检查)", 又重新启用了自动解锁功能, 将会显示出两个外部密钥,# 第一个外部密钥是已经不再使用的, 第二个外部密钥是目前用于自动解锁的外部密钥.manage-bde -protectors -get D: -type ExternalKey# 清除系统盘上的旧外部密钥manage-bde -autounlock -clearallkeys C:# 清除固定驱动器D上的外部密钥, 已经配置为自动解锁的外部密钥会删除失败manage-bde -protectors -delete D: -type ExternalKey系统还原会将还原点保存在系统盘上, 并且还原可能导致系统出错.
可以将系统映像作为系统还原点使用.
将系统映像作为系统还原点使用时, 由于该操作可以在操作系统内完成, 所以可以不进入Windows RE, 也就不必重新开启BitLocker.
将系统映像作为系统还原点使用时, 由于该操作可以在操作系统内完成, 所以可以不进入Windows RE, 也就不必重新开启BitLocker.
与系统映像恢复的区别在于, 系统还原是较为高级的功能, 它不会清除系统盘的数据重新写入,
而是基于特定的模式修改系统盘上已经存在的文件.
在备份后产生的数据, 只要不是位于注册表、系统目录、程序目录等关键位置, 在还原完成后会保留下来.
因此, 系统还原可能会制造问题, 例如还原完毕后部分来自Microsoft Store的应用可能出现异常, 启动项顺序发生变化等.
而是基于特定的模式修改系统盘上已经存在的文件.
在备份后产生的数据, 只要不是位于注册表、系统目录、程序目录等关键位置, 在还原完成后会保留下来.
因此, 系统还原可能会制造问题, 例如还原完毕后部分来自Microsoft Store的应用可能出现异常, 启动项顺序发生变化等.
为了将系统映像作为还原点使用, 需要启动系统保护功能一样, 在
点击
控制面板\系统和安全\系统\系统保护 里临时启用系统保护.点击
系统还原 按钮, 就会进入系统还原向导, 可以发现类型为备份的系统映像还原点, 只要按照提示操作就可以完成系统还原.该功能存在一些实现上的问题, 导致该功能只适合用来快速浏览备份内容, 不适合用来恢复备份.
问题:
- 文件名中的大小写出错.
- 将备份挂载为磁盘时, 磁盘会挂载为FAT32格式.
这导致4GB以上的文件会被分割显示为多个文件, 分割后的文件会在文件名后加上~001,~002后缀.
全名为Minimalist GNU for Windows, 是GNU工具包的Windows移植.
MinGW不是完整的类Unix环境, 不提供不能轻易使用Windows API实现的POSIX API.
MinGW编译出的程序是直接调用Windows API的, 因此不需要额外的兼容性层.
根据洁净室设计原则创建的MinGW继任项目.
它主要提供GCC及其配套的工具链, 是一套编译环境.
目前由Red Hat维护, 专用软件需要支付许可协议.
以 兼容性为优先 的Unix层, 为Windows提供了完整的Unix API,
程序无需进行大修改就可以在Windows上运行,
编译出的程序需要依赖于Cygwin的POSIX仿真层.
程序无需进行大修改就可以在Windows上运行,
编译出的程序需要依赖于Cygwin的POSIX仿真层.
性能弱于MinGW, 占用的内存和硬盘空间也大于MinGW.
Cygwin被大量用于将自由软件移植到Windows平台.
Cygwin会在Windows上模拟Unix权限,
因此可能导致与Cygwin有关的文件在Windows上不可用(典型情况是不能执行).
通过为/etc/fstab内的挂载添加noacl属性可以防止Cygwin影响Windows的权限,
但必须要关闭所有cygwin程序后才能生效(包括ssh.exe在内), 因此推荐重启系统.
因此可能导致与Cygwin有关的文件在Windows上不可用(典型情况是不能执行).
通过为/etc/fstab内的挂载添加noacl属性可以防止Cygwin影响Windows的权限,
但必须要关闭所有cygwin程序后才能生效(包括ssh.exe在内), 因此推荐重启系统.
基于Mingw-w64和Cygwin的Windows软件开发和部署平台,
其主要目的仍是为了将程序编译为Windows本地程序.
由于使用Mingw-w64, 其提供的软件包数量远少于Cygwin.
其主要目的仍是为了将程序编译为Windows本地程序.
由于使用Mingw-w64, 其提供的软件包数量远少于Cygwin.
MSYS2使用来自Archi Linux的包管理器Pacman,
带有3个软件包仓库:
带有3个软件包仓库:
- mingw64
- mingw32
- msys2
Git官方使用MSYS2发行Windows版本.
.NET的软件包管理器, 可以在Visual Studio中找到它.
Windows上最流行的软件包管理器.
安装程序需要管理员权限.
Windows上流行的命令行软件安装器.
Scoop安装软件不需要管理员权限, 会将程序安装到~/scoop目录.
Scoop安装软件不需要管理员权限, 会将程序安装到~/scoop目录.
Scoop不将自己称作包管理器, 而认为自己只是根据由JSON表示的App Manifest来自动化安装需要的软件包.
它有两个包仓库, 存储了常见包的App Manifests:
https://github.com/ScoopInstaller/Main/tree/master/bucket (主仓库, 包含知名软件的稳定版本)
https://github.com/lukesampson/scoop-extras (不符合主仓库要求的软件包)
它有两个包仓库, 存储了常见包的App Manifests:
https://github.com/ScoopInstaller/Main/tree/master/bucket (主仓库, 包含知名软件的稳定版本)
https://github.com/lukesampson/scoop-extras (不符合主仓库要求的软件包)