Windows 通过目录隔离模型实现:架构隔离 (32/64 位)、权限隔离 (系统级 / 用户级)、数据隔离 (机器全局数据 / 用户私有数据 / 低完整性数据)、UWP / 桌面应用隔离 Windows 关键目录‑环境变量对照表

Windows10 核心系统目录完整解构拆解

覆盖:Program FilesProgram Files (x86)ProgramDataAppData(Roaming/Local/LocalLow)Local\ProgramsSystemAppsWindowsAppsSystem32SysWOW64WinSxS 分析框架:底层原理|依赖文件|依赖关系|配套链|逻辑链路|边界

一、底层原理

Windows 通过目录隔离模型实现:架构隔离 (32/64 位)、权限隔离 (系统级 / 用户级)、数据隔离 (机器全局数据 / 用户私有数据 / 低完整性数据)、UWP / 桌面应用隔离。 关键底层机制:

  1. WOW64 重定向:64 位系统下 32 位进程访问C:\Windows\System32会被自动重定向到SysWOW64;访问Program Files重定向到Program Files (x86)
  2. ACL 安全描述符:不同目录预设不同 NTFS 权限,控制写入、读取权限,区分Administrator/SYSTEM/普通用户
  3. 环境变量映射:系统通过环境变量指向各个目录,程序禁止硬编码绝对路径。
  4. 完整性标签 (强制标签)LocalLow目录设置低完整性级别,供沙盒、IE 低权限进程写入。
  5. 包虚拟化机制:UWP 应用使用WindowsAppsSystemApps,受 Appx 包管理器托管,目录权限严格锁定。
  6. 组件存储 WinSxS:CBS 组件存储,存放多版本系统二进制,提供系统回滚、SFC 修复源。

Windows 关键目录‑环境变量对照表

底层访问入口,应用程序开发建议使用环境变量,禁止硬编码C:\xxx绝对路径

环境变量 对应物理路径
%ProgramFiles% C:\Program Files
%ProgramFiles(x86)% C:\Program Files (x86)
%ProgramData% C:\ProgramData
%APPDATA% %UserProfile%\AppData\Roaming
%LOCALAPPDATA% %UserProfile%\AppData\Local
无直接环境变量 %USERPROFILE%\AppData\LocalLow
%LOCALAPPDATA%\Programs %UserProfile%\AppData\Local\Programs(用户级免管理员安装目录)
%SystemRoot%\System32 C:\Windows\System32
%SystemRoot%\SysWOW64 C:\Windows\SysWOW64

补充常用配套环境变量

环境变量 对应物理路径
%USERPROFILE% C:\Users <当前用户名>
%SystemRoot% C:\Windows
%TEMP% / %TMP% %LOCALAPPDATA%\Temp 当前用户临时目录

小提示

  1. LocalLow没有内置环境变量,代码中需要拼接:%USERPROFILE%\AppData\LocalLow
  2. 在 cmd、PowerShell 直接echo %变量名%即可解析查看真实路径。
  3. 32 位 / 64 位进程受 WOW64 重定向影响,相同环境变量解析后实际访问物理路径会发生变化。

二、逐个目录拆解

1. C:\Program Files

  • 底层原理:系统全局 64 位桌面应用默认安装位置;NTFS ACL:普通用户无写入权限,必须管理员权限才能新建 / 修改文件。
  • 依赖文件:目录 ACL 安全描述符;环境变量%ProgramFiles%;WOW64 重定向表。
  • 依赖关系:安装程序需要管理员 UAC 提升;64 位进程直接访问;32 位进程会被 WOW64 重定向到Program Files (x86)
  • 配套链:MSI 安装程序、exe 安装包默认目标路径;卸载信息写入HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall(机器全局卸载注册表)。
  • 逻辑链路:安装包 UAC 提升 → 写入 ProgramFiles → 注册机器级卸载项;程序运行只读读取目录内 exe/dll。
  • 边界
    1. 普通用户不能直接在此目录新建、修改文件;
    2. 32 位程序默认不会进来,受 WOW64 重定向拦截;
    3. 目录内程序属于机器级别,本机全部用户都可使用;删除目录内文件会触发应用损坏。

2. C:\Program Files (x86)

  • 底层原理:64 位系统存放 32 位桌面应用;WOW64 重定向核心目标目录。
  • 依赖文件:WOW64.dll 内核‑用户态重定向逻辑;环境变量%ProgramFiles(x86)%
  • 依赖关系:32 位进程读取%ProgramFiles%,操作系统自动替换为此路径;同样需要管理员权限写入。
  • 配套链:旧版 32 位软件、MS Office32 位;卸载项同样存于 HKLM 机器注册表。
  • 逻辑链路:32 位安装包 UAC 提升写入;32 位进程加载自身 dll;64 位进程访问该目录不会重定向。
  • 边界
    1. 纯 32 位 Windows 系统不存在此文件夹
    2. 64 位软件不会安装到此;手动硬编码路径绕过重定向会引发兼容性故障。

3. C:\ProgramData

  • 底层原理机器全局公共用户数据目录,对本机所有用户可见;对应旧版 Windows C:\Documents and Settings\All Users。不存放程序 exe,存放配置、缓存、公共资源。
  • 依赖文件:环境变量%ProgramData%;NTFS ACL:普通用户可读,部分子目录需要管理员写入。
  • 依赖关系:数据对本机全部用户共享;不属于任何一个特定用户。
  • 配套链:服务程序、后台服务、杀毒软件公共配置;Windows 功能组件配置。
  • 逻辑链路:安装时管理员写入公共配置;任意用户运行程序读取公共数据;用户个人配置严禁写这里
  • 边界
    1. 不是程序安装目录,不要放 exe 可执行文件;
    2. 用户没有修改权限;普通应用不要往根目录写文件,应创建自己的子文件夹;
    3. 重装系统该目录会被重置。

4. %UserProfile%\AppData\Roaming (%APPDATA%)

  • 底层原理用户漫游配置,设计用于域环境用户配置文件漫游;用户登录服务器会同步该目录到域控制器。存储该用户软件的个人配置、预设。
  • 依赖文件:环境变量%APPDATA%;用户配置文件 UserProfile 服务;域配置文件漫游组件。
  • 依赖关系:仅当前登录用户拥有读写权限;其他用户无法访问;域环境下会网络同步;本地账户不会同步。
  • 配套链:绝大部分桌面软件的用户配置;软件记住窗口布局、账号、偏好设置。
  • 逻辑链路:软件运行时,以当前用户身份读写配置;域用户注销,系统把 Roaming 数据回写域服务器;异地登录拉取配置。
  • 边界
    1. 存放小体积配置,禁止放大缓存、下载文件,域漫游会拖慢登录注销;
    2. 单机本地账户,漫游逻辑不生效,但软件依旧往这里写配置;
    3. 此目录数据跟随用户配置文件,删除用户会全部清空。

5. %UserProfile%\AppData\Local (%LOCALAPPDATA%)

  • 底层原理:本机本地用户数据;不会域漫游同步;存放缓存、临时文件、大型本地资源。
  • 依赖文件:环境变量%LOCALAPPDATA%;用户配置文件服务;域漫游排除列表默认排除 Local。
  • 依赖关系:仅当前用户读写;域环境登录不会网络同步此目录
  • 配套链:浏览器缓存、软件日志、缩略图缓存;用户级别免安装软件目录Local\Programs
  • 逻辑链路:软件读写本地缓存;用户注销,数据保留在本机,不上传域控。
  • 边界
    1. 域环境不会同步;换电脑该目录全部丢失;
    2. 可以存放较大文件;适合缓存、临时数据。

6. %UserProfile%\AppData\Local\Programs

  • 底层原理用户级别应用安装目录,不需要管理员 UAC 提升;普通用户权限即可写入;只对当前这个用户生效,其他本机用户看不到这个软件。
  • 依赖文件:属于 Local 子目录;没有独立环境变量。
  • 依赖关系:无管理员权限也可以安装;软件注册在HKCU 当前用户注册表,不在 HKLM 机器注册表。
  • 配套链:大量 NSIS Inno Setup “仅为当前用户安装” 选项;微软商店部分用户级应用。
  • 逻辑链路:安装包不请求 UAC;写入 Local\Programs;写入 HKEY_CURRENT_USER 注册卸载信息。
  • 边界
    1. 其他 Windows 用户账户看不到此软件;
    2. 卸载信息存储于当前用户注册表;删除用户账户软件直接失效;
    3. 服务程序不能放这里,服务是系统全局,不绑定登录用户。

7. %UserProfile%\AppData\LocalLow

  • 底层原理低完整性级别目录;NTFS 强制完整性标签 = Low;供沙盒、受保护低权限进程读写。
  • 依赖文件:NTFS 强制完整性安全标签;没有系统环境变量。
  • 依赖关系:普通高完整性进程可以读;低完整性沙盒进程只能写 LocalLow,不能写入 Roaming/Local
  • 配套链:旧版 IE 沙盒、浏览器插件沙盒;部分沙盒化应用。
  • 逻辑链路:低完整性进程,系统允许仅向 LocalLow 写入数据;阻止低权限进程篡改高完整性用户配置。
  • 边界
    1. 普通桌面软件一般不使用;专门给沙盒进程;
    2. 域漫游也不会同步 LocalLow;
    3. 手动复制文件到此目录不会自动赋予 Low 完整性标签。

8. C:\Windows\System32

  • 底层原理:64 位 Windows64 位系统核心二进制目录;内核模式驱动、系统 dll、系统 exe;WOW64 重定向源点。

很多人误区:System32 不是 32 位,Win10 64 位 System32 存放64 位组件

  • 依赖文件:大量 sys、dll、cpl、msc;CBS 组件存储 WinSxS 硬链接。
  • 依赖关系:需要 TrustedInstaller 权限修改;普通管理员也没有完全写入权限。
  • 配套链:SFC、DISM 系统修复;CBS 组件服务;Windows 功能启用关闭。
  • 逻辑链路:系统启动加载 System32 内组件;WinSxS 通过硬链接映射文件到此;SFC 校验文件哈希。
  • 边界
    1. 32 位进程访问 System32 被 WOW64 重定向到 SysWOW64;
    2. 用户不要手动修改里面任何文件;权限归 TrustedInstaller;
    3. 系统更新会替换这里的系统二进制。

9. C:\Windows\SysWOW64

  • 底层原理:存放32 位系统 DLL、EXE,64 位操作系统的 32 位系统兼容层。
  • 依赖文件:wow64.dll、wow64win.dll 重定向引擎。
  • 依赖关系:32 位进程看到的 “System32” 物理上就是 SysWOW64。
  • 配套链:旧版 32 位系统工具;32 位应用依赖的系统库。
  • 逻辑链路:32 位应用加载系统 dll,实际读取 SysWOW64;64 位进程直接访问该文件夹不会重定向。
  • 边界
    1. 纯 32 位 Windows 不存在 SysWOW64;
    2. 禁止手动拷贝 dll 到此目录,应当通过组件或者注册方式。

10. C:\Windows\WinSxS

  • 底层原理:Windows Component Based Servicing (CBS) 组件存储;保存系统组件多版本副本;System32 下大量文件是来自 WinSxS 的NTFS 硬链接,不是复制副本。
  • 依赖文件:CBS 数据库;manifest 清单文件;硬链接;DISM/SFC 工具。
  • 依赖关系:TrustedInstaller 完全控制;普通管理员只读;磁盘占用大属于正常现象。
  • 配套链:Windows 更新、SFC 修复、启用 Windows 可选功能、系统版本回滚。
  • 逻辑链路:系统更新把新版本组件放入 WinSxS;通过硬链接投射到 System32;SFC 检测 System32 文件损坏,从 WinSxS 硬链接恢复。
  • 边界
    1. 不要手动删除 WinSxS 里面文件,会直接系统损坏;清理必须使用DISM /StartComponentCleanup
    2. 文件夹体积大属于设计使然;保存多个版本组件用于回滚;
    3. 里面大量硬链接,文件统计工具会重复计算占用。

11. C:\Program Files\WindowsApps

  • 底层原理:UWP/MSIX 应用包存储;商店应用、部分系统内置应用;受 AppX 包管理器托管;ACL 严格锁定,普通用户无法浏览打开。
  • 依赖文件:AppxDeploymentService 包部署服务;包清单 AppxManifest.xml。
  • 依赖关系:SYSTEM 权限;普通用户拒绝访问;每个应用一个子目录版本化命名。
  • 配套链:Microsoft Store;PowerShell Add‑AppxPackage / Remove‑AppxPackage。
  • 逻辑链路:商店下载 msix 包 → 解压注册到 WindowsApps;包管理器控制生命周期。
  • 边界
    1. 资源管理器默认拒绝访问;不要手动修改目录内文件;
    2. 每个应用多版本并存;卸载由 PowerShell/AppX 服务完成。

12. C:\Windows\SystemApps

  • 底层原理:系统内置 UWP 包(开始菜单、设置、锁屏、系统 UI 组件);和 WindowsApps 机制相同,属于操作系统内置,不能随意卸载。
  • 依赖文件:Appx 部署服务;系统启动必须依赖的包。
  • 配套链:系统 Shell、设置应用;PowerShell 管理 Appx 包。
  • 边界:属于操作系统核心,删除会导致开始菜单、设置崩溃。

三、配套链总览

  1. 安装程序分类
  • 机器级安装(需要管理员 UAC):目标Program Files / Program Files(x86);卸载注册表:HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
  • 用户级安装(无需管理员):目标%LOCALAPPDATA%\Programs;卸载注册表:HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
  1. Windows 可选组件管理配套
  • GUI:控制面板 → 程序 → 启用或关闭 Windows 功能,读取 WinSxS 组件清单
  • PowerShell
#安装可选组件
Enable‑WindowsOptionalFeature ‑Online ‑FeatureName XXXX
#关闭组件
Disable‑WindowsOptionalFeature ‑Online ‑FeatureName XXXX
  • 底层依赖:dism.execbscore.dll,源来自 WinSxS 组件存储。
  1. 修复工具配套
sfc /scannow
DISM /Online /Cleanup‑Image /RestoreHealth

SFC 校验 System32 文件,修复源来自 WinSxS 硬链接库。

四、全局边界总览(高频踩坑)

  1. WOW64 重定向坑:64 位系统,32 位进程看到的 System32 物理是 SysWOW64;写程序不要硬编码路径,优先使用系统环境变量
  2. 权限边界
    • ProgramFiles、System32、WinSxS、WindowsApps:普通用户不可写,部分需要 TrustedInstaller 权限。
    • AppData 下面全部目录:仅所属用户可读写。
    • ProgramData:机器全局可读,写入一般要管理员。
  3. 漫游边界Roaming用于域同步;Local / LocalLow永远不漫游;单机本地账户漫游逻辑不生效。
  4. 文件存放边界
    • 可执行 exe:放ProgramFiles(机器)或者Local\Programs(用户)。
    • 公共配置:ProgramData
    • 用户个人配置:%APPDATA%
    • 缓存大文件:%LOCALAPPDATA%
    • 沙盒低权限:LocalLow
    • 禁止:把用户配置写入 ProgramFiles、System32,现代 Windows 会触发文件虚拟化兼容层。
  5. WinSxS 禁止手动删除;清理组件必须 DISM 命令。
  6. WindowsApps/SystemApps UWP 目录禁止手动增删文件,必须通过 AppX 包管理器 PowerShell。
  7. 用户配置文件删除,整个 AppData 全部清空;重装系统 ProgramData 重置。

Windows 目录隔离模型 完整解构拆解

模型定义:Windows 依靠NTFS 权限、WOW64 架构重定向、用户配置文件、完整性标签、UAC 文件虚拟化、AppContainer 包隔离一套组合机制,通过目录实现五大隔离:架构隔离 (32/64 位)、权限隔离 (系统全局 / 用户私有)、数据隔离 (漫游 / 本地 / 低完整性)、应用隔离 (UWP/MSIX)、兼容性隔离 (VirtualStore)。 分析框架:底层原理|依赖文件|依赖关系|配套链|逻辑链路|边界

一、底层原理

目录隔离模型不是单一组件,是多层防御叠加模型,分为 5 大隔离维度:

  1. 架构隔离(WOW64) 64 位系统同时运行 32/64 位程序;内核层拦截 32 位进程文件系统调用,透明重定向路径,防止 32 位程序加载 64 位系统 DLL;物理目录Program Files / Program Files(x86)System32 / SysWOW64做物理分离。
  2. 权限‑ACL 隔离 NTFS 目录预设安全描述符 ACL,区分:
  • 机器全局目录:ProgramFilesSystem32ProgramData;普通用户只读,写入需要管理员 / TrustedInstaller 权限。
  • 用户私有目录:AppData整套目录;仅当前 SID 用户读写,其他用户账户拒绝访问。 通过文件对象安全描述符,内核 I/O 管理器做访问校验。
  1. 用户数据隔离(User Profile) ProfSvc用户配置服务,每个账户独立一套UserProfile,内部分割三类数据:
  • Roaming:支持 AD 域配置文件漫游,跨设备同步小配置;
  • Local:本机本地缓存,永远不漫游,存放大体积缓存;
  • LocalLow:附加 NTFS低完整性强制标签,专供沙盒低完整性进程写入,防止低权限篡改正常用户配置博客园。
  1. UAC 虚拟化(兼容隔离 VirtualStore) 遗留 32 位旧软件错误向ProgramFiles/Windows写配置;系统不直接报错,透明重定向写入当前用户%LOCALAPPDATA%\VirtualStore,欺骗应用以为写入系统目录;仅用于兼容老软件,现代应用禁用该机制GitHub。
  2. AppContainer / MSIX 包隔离(应用容器隔离) UWP、MSIX 应用;安装目录WindowsAppsSystemApps权限锁定;运行时文件系统虚拟化,每个应用拥有独立虚拟视图;卸载时完整清理全部数据,无残留垃圾文件Microsoft ...。

核心思想:物理目录 + 内核 I/O 拦截 + 权限 ACL + 运行时路径重定向,多层叠加完成隔离;应用通过标准 API 获取路径,禁止硬编码绝对路径 C:\xxx

二、依赖文件

组件 文件 / 驱动 作用
NTFS 文件系统驱动 ntfs.sys NTFS ACL 安全描述符、强制完整性标签、硬链接、权限继承基础载体博客园
WOW64 子系统 wow64.dllwow64win.dllwow64cpu.dll 32 位进程文件系统、注册表路径重定向核心;NtOpenFile 系统调用前做路径改写
用户配置服务 profsvc.dll(ProfSvc 服务) 用户登录创建、加载、初始化 AppData 整套目录、ACL、漫游同步、NTUSER.DAT 加载博客园
已知文件夹 API shell32.dlluserenv.dll SHGetKnownFolderPath,提供环境变量对应路径;现代程序获取目录标准入口
I/O 管理器 + 过滤框架 fltmgr.sys 挂载文件系统回调,实现 UAC 虚拟化、各类文件过滤拦截
UAC 虚拟化逻辑 kernel32.dllntdll.dll 判断进程是否需要虚拟化,完成写入重定向至 VirtualStoreGitHub
AppX 包管理器 appxsvc.dllstaterepository.dll WindowsApps 目录权限管控、MSIX 运行时虚拟文件系统 VFS
注册表配套 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders 系统目录原始路径配置;环境变量解析源头

三、依赖关系

  1. 系统服务强依赖:ProfSvc(User Profile Service) ProfSvc 禁用:用户登录失败,生成临时配置文件;整套 AppData 目录隔离机制完全失效,Roaming/Local/LocalLow 全部异常博客园。
  2. WOW64 依赖进程 PE 头 Machine 标记 内核读取 PE 头 Machine 字段,区分是 32/64 位进程;只有 32 位进程触发 WOW64 路径重定向;64 位进程不做改写
  3. UAC 虚拟化依赖条件(全部满足才生效)
  • 进程非提升(非管理员 UAC 提升);
  • 32 位进程;
  • 程序 manifest 没有标记requestedExecutionLevel
  • 写入路径属于受保护系统目录(ProgramFiles、Windows);

64 位进程、已提升进程、带正确 manifest 现代软件,默认关闭 UAC 虚拟化,不会进入 VirtualStore 重定向。

  1. NTFS 依赖 ACL、强制完整性标签、VirtualStore 全部依赖 NTFS;如果分区为 FAT32,ACL 与完整性标签全部失效,目录权限隔离能力消失
  2. 完整性标签依赖 LocalLow LocalLow 目录必须设置 Low 强制完整性标签;手动复制文件到此目录不会自动继承标签,沙盒进程依旧无法写入。
  3. 域环境依赖 Roaming 漫游隔离生效依赖 AD 域控制器;单机本地账户,Roaming 目录物理存在,但不会执行网络同步;Local/LocalLow 永远不参与漫游。
  4. 包隔离依赖 AppX 服务 停止 AppX 服务,WindowsApps、SystemApps 目录隔离失效,UWP/MSIX 无法正常运行。

四、配套链

4.1 上层 API 与环境变量(应用层入口)

应用禁止硬编码 C:\xxx,必须使用两套方式获取目录:

  1. 环境变量:%ProgramFiles%%APPDATA%%LOCALAPPDATA%
  2. Win32 API:SHGetKnownFolderPath,shell32.dll 提供,推荐现代软件使用。

4.2 五大隔离目录分组配套

  1. 机器全局组ProgramFilesProgramFiles(x86)ProgramDataSystem32SysWOW64

配套:MSI 安装包、HKLM 机器注册表、TrustedInstaller 权限;存放程序二进制、机器公共配置。

  1. 用户配置组%UserProfile%\AppData\Roaming / Local / LocalLow / Local\Programs

配套:ProfSvc 服务、HKCU 用户注册表;存放用户私有配置、缓存、用户级别免安装软件。

  1. 虚拟化兼容组%LOCALAPPDATA%\VirtualStore

配套:UAC 虚拟化,专门承接旧软件错误写入系统目录的 IO;仅兼容遗留软件。

  1. UWP 包隔离组WindowsAppsSystemApps

配套:AppX 服务、MSIX VFS 虚拟文件系统;每个应用独立版本目录,卸载整体删除。

4.3 运维配套工具

  • icacls.exe:查看 / 修改目录 NTFS ACL、完整性标签,排查目录权限隔离异常;
  • set:cmd 查看全部环境变量;
  • fltmc filters:查看文件系统过滤驱动栈,虚拟化、过滤驱动运行状态;
  • PowerShell Get‑AppxPackage:管理包隔离应用;
  • 组策略:可控制用户配置文件漫游行为,调整 Roaming 同步黑名单。

五、逻辑链路(完整时序,进程访问隔离目录)

  1. 进程启动,内核读取 PE 头 Machine 标识,标记该进程是 32 位还是 64 位;
  2. 应用调用CreateFileW打开目录路径,传入路径字符串(优先来自环境变量 / SHGetKnownFolderPath);
  3. 系统调用进入内核 NtOpenFile;
  4. 第一层:WOW64 重定向判断 如果是 32 位进程,命中 WOW64 重定向路径表,透明改写路径: C:\Program FilesC:\Program Files (x86)C:\Windows\System32C:\Windows\SysWOW64
  5. 第二层:NTFS ACL 安全校验 I/O 管理器读取目标目录 ACL 安全描述符,拿进程 Token SID 对比;判断读 / 写权限是否允许;
    • 权限允许:直接下发 IO 至 NTFS 驱动;
    • 写操作权限拒绝,进入下一步 UAC 虚拟化判断。
  6. 第三层:UAC 文件虚拟化判断 满足虚拟化全部条件(32 位、未提升、无 manifest、写入受保护系统目录); 将写入操作透明重定向至该用户VirtualStore下镜像路径;程序感知不到重定向;读取时优先读 VirtualStore,无数据再读原始系统目录Microsoft ...。
  7. 第四层:完整性标签校验(针对 LocalLow) 如果目标目录是 LocalLow;校验进程完整性级别;只有 Low 完整性进程允许写入。
  8. 第五层:AppContainer 包隔离校验(UWP/MSIX) 包应用访问外部目录,校验包能力声明;没有声明权限直接拒绝访问;内部使用 VFS 虚拟合并视图。
  9. IO 落地 NTFS 磁盘,返回结果给应用层。

用户登录阶段前置链路: 用户登录 → ProfSvc 启动 → 创建 / 加载 UserProfile → 自动生成 Roaming/Local/LocalLow 目录,初始化 ACL、完整性标签;域环境同步 Roaming 漫游数据。

六、边界(约束、坑点、失效条件)

6.1 WOW64 架构隔离边界

  1. 只有64 位 Windows 才有这套隔离;纯 32 位 Windows 不存在Program Files(x86)SysWOW64
  2. 可以通过Wow64DisableWow64FsRedirectionAPI 手动关闭重定向;关闭后极易出现 32 位程序加载 64 位 DLL 崩溃;
  3. 重定向只发生在进程运行时,磁盘目录本身物理真实存在,不是符号链接。

6.2 NTFS‑ACL 权限隔离边界

  1. FAT32 分区 ACL、完整性标签全部失效,目录隔离模型不完整
  2. 管理员可以手动修改目录 ACL,破坏系统预设隔离,引发软件异常;
  3. TrustedInstaller是很多系统目录所有者;即使本地管理员,也不具备完全修改权限。

6.3 用户配置(AppData)隔离边界

  1. Roaming 漫游只同步小体积配置文件;大缓存必须放 Local;否则 AD 域登录注销严重卡顿;
  2. Local、LocalLow 永远不会漫游;换机器数据丢失;
  3. 删除用户账户,整套 AppData 全部销毁;
  4. LocalLow 仅仅自带 Low 标签;手动新建文件夹不会自动继承完整性标签,沙盒进程写失败。

6.4 UAC VirtualStore 虚拟化边界

  1. 仅针对遗留 32 位无 Manifest 旧软件;现代软件不应该依赖虚拟化
  2. 不会虚拟化 exe/dll 等可执行文件写入,只针对配置类数据;防止恶意软件利用虚拟化投放恶意二进制GitHub;
  3. 提升后的管理员进程完全不触发虚拟化;
  4. VirtualStore 属于每个用户独立;A 用户 VirtualStore 数据对 B 用户完全不可见;很多故障根源:程序以为修改 ProgramFiles 配置,实际只写进当前用户 VirtualStore。

6.5 AppContainer/MSIX 包隔离边界

  1. WindowsApps 目录普通用户默认拒绝访问;手动修改目录 ACL 会破坏包校验,商店应用报错无法启动更新;
  2. MSIX 虚拟文件系统 VFS 仅包应用运行时生效;磁盘物理目录不发生改变。

6.6 通用误区边界

  1. 目录隔离模型是运行时逻辑重定向 + NTFS 权限,不是虚拟机容器;进程依旧原生运行,只是文件视图被改写;
  2. 硬编码绝对路径C:\Program Files会绕过环境变量,在 32 位进程被 WOW64 改写,出现非预期路径;必须使用环境变量 / SHGetKnownFolderPath
  3. D 盘手动自建D:\Program Files文件夹:不会自动继承系统 ACL、不会触发 WOW64 重定向、不会触发 UAC 虚拟化,隔离机制全部失效。

故障现象汇总:

  • 32 位程序安装看似写入 ProgramFiles,实际跑到 Program Files (x86):WOW64 重定向;
  • 程序修改系统配置,重启后配置丢失:写入被 UAC 虚拟化到 VirtualStore;
  • 沙盒进程无法写入 LocalLow:目录缺少 Low 完整性标签;
  • 域环境换电脑软件配置不见:软件把配置写进 Local 而不是 Roaming。

Windows 10 系统中都是常见的系统目录,每个目录都有其特定的功能和作用。下面是它们的简要区别、功能和优势:

  1. C:\Program Files:

    • 功能:这是用于存放系统安装的应用程序的默认目录。
    • 作用:安装程序通常会将应用程序文件安装到这个目录中,确保程序的安全性和隔离性。
    • 优势:提供了一个标准的位置来存放应用程序文件,使系统更易于管理和维护。
  2. C:\Program Files (x86):

    • 功能:这是用于存放 32 位应用程序安装文件的目录。
    • 作用:对于 32 位应用程序,通常会安装到这个目录中,与 64 位应用程序相互隔离。
    • 优势:确保了不同位数应用程序的文件不会混合在一起,提高了系统的稳定性和兼容性。
  3. C:\Users\Username\AppData:

    • 功能:包含用户特定的应用程序数据和设置。
    • 作用:存储用户个人数据、配置文件以及某些应用程序的本地数据。
    • 优势:帮助实现用户数据与系统数据的分离,确保用户数据的隐私性和安全性。
  4. C:\Users\Username\AppData\Roaming:

    • 功能:用于存储用户在不同计算机上共享的数据,如配置文件等。
    • 作用:确保用户在不同设备上使用同一应用程序时能够共享数据和设置。
    • 优势:提高了用户体验,使用户能够无缝地在不同设备上访问其个人数据。
  5. C:\Users\Username\AppData\Local:

    • 功能:用于存储用户特定且不需要在不同设备之间共享的数据。
    • 作用:包含本地应用程序数据、缓存文件等。
    • 优势:提高了应用程序的响应速度和性能,同时保护用户数据的隐私性。
  6. C:\Users\Username\AppData\Local\Programs:

    • 功能:用于存储用户安装的应用程序。
    • 作用:提供一个用户级别的应用程序安装目录,而非系统级别的 Program Files 目录。
    • 优势:用户可以在该目录下安装个人偏好的应用程序,不影响整个系统。
  7. C:\Users\Username\AppData\LocalLow:

    • 功能:用于存储低权限应用程序的数据。
    • 作用:为低权限应用程序提供一个独立的数据存储位置,以增加系统安全性。
    • 优势:提高了系统的安全性和稳定性,降低了低权限应用程序对系统的风险。
  8. C:\ProgramData:

    • 功能:用于存储系统和所有用户共享的应用程序数据。
    • 作用:提供一个系统级别的数据存储位置,供所有用户和应用程序共享。
    • 优势:确保系统和多用户环境下的应用程序能够共享数据,提高了系统整体的效率和协作性。

 

Windows 10 中,软件安装目录和应用安装目录有以下几个常见的位置:

  1. 软件安装目录

    • C:\Program Files:这是用于存放系统安装的应用程序的默认目录。64 位应用程序通常会安装到这个目录中。
    • C:\Program Files (x86):这是用于存放 32 位应用程序安装文件的目录。
  2. 应用安装目录

    • C:\Users\Username\AppData\Local\Programs:这是用户级别的应用程序安装目录,用于存储用户安装的应用程序。

 

Windows 10 中,系统自带应用的安装目录通常在以下位置:

  1. C:\Windows\SystemApps:这个目录包含了 Windows 10 系统自带的一些应用的安装文件。

  2. C:\Program Files\WindowsApps:这个目录包含了 Windows 10 应用商店中下载的应用的安装文件,也包含一些系统自带的应用的安装文件。

 

 

  1. 默认软件安装目录

    • C:\Program Files:这是用于存放系统安装的应用程序的默认目录。大多数 64 位应用程序会安装到这个目录中。
    • C:\Program Files (x86):这是用于存放 32 位应用程序安装文件的目录。
  2. 默认应用安装目录

    • C:\Users\Username\AppData\Local\Programs:这是用户级别的应用程序安装目录,用于存储用户安装的应用程序。
  3. 默认组件安装目录

    • C:\Windows\System32:这个目录包含 Windows 系统的核心组件和可执行文件,如驱动程序、DLL 文件等。
    • C:\Windows\SysWOW64:这个目录包含了运行在 32 位模式下的系统组件和应用程序。

 

Windows 10 中,很多组件功能是系统自带的,并且已经预先安装在系统中。这些组件功能通常存储在以下默认位置:

  1. C:\Windows\System32:这个目录包含了 Windows 系统的核心组件和可执行文件,如驱动程序、DLL 文件等。

  2. C:\Windows\SysWOW64:这个目录包含了运行在 32 位模式下的系统组件和应用程序。

  3. C:\Windows\WinSxS:这个目录包含了系统的所有组件和资源,这些组件和资源可以被不同的应用程序共享和使用。

 

需要安装或卸载系统组件,可以通过控制面板或 PowerShell 来进行操作。具体方法如下:

  1. 在任务栏的搜索框中输入“控制面板”,然后选择“控制面板”应用程序;
  2. 在控制面板中,选择“程序”;
  3. 点击“启用或关闭 Windows 功能”;
  4. 在弹出的对话框中,勾选或取消勾选你需要安装或卸载的组件,然后点击“确定”即可。

或者,你也可以使用 PowerShell 来进行安装或卸载组件,具体命令如下:

  • 安装组件功能:Enable-WindowsOptionalFeature -Online -FeatureName FeatureName
  • 卸载组件功能:Disable-WindowsOptionalFeature -Online -FeatureName FeatureName
posted @ 2024-02-27 02:18  suv789  阅读(2615)  评论(0)    收藏  举报