前一阵子,某互联网大厂的 Windows 版聊天应用被曝出私自扫描用户浏览器历史记录的恶劣事件,引发了不少人对隐私安全的担忧。这种“扫盘”行为本质上是用当前登录的账户权限,读取了本应属于个人隐私的文件。
既然软件不可信,一个朴素的想法是:让它在权限不足的“囚笼”里运行。除了使用沙盒或虚拟机,Windows 本身支持以其他用户的身份启动进程,配合权限限制,可以以一种比较轻量的方式防止软件越界访问。
核心思路
- 创建一个普通/标准用户账户(非管理员)。
- 使用
runas /savecred让该账户运行目标软件,并保存密码凭据。 - 之后双击批处理即可启动,无需每次手动输入密码。
第一步:新建一个带密码的普通账户
注意:用于
runas /savecred的账户必须有密码,空密码会导致凭据保存失败或无法正常工作。
打开命令提示符(管理员)执行:
net User AppSandbox YourPassword123 /add
或者通过图形界面:
Win + R→lusrmgr.msc→ “用户” → 右键新建用户,设置密码。
建议角色:Users 组(标准用户),不要加入 Administrators。
第二步:编写批处理脚本
新建一个文本文件,比如 RunChatSafe.bat,内容如下:
@echo off
runas /savecred /user:"AppSandbox" "C:\Path\To\ProblemApp.exe"
将
AppSandbox换成你的用户名,C:\Path\To\ProblemApp.exe换成实际软件路径。
第一次运行时会弹出一个命令行窗口,要求输入密码。输入正确并执行后,/savecred 会将凭据加密保存到当前用户的凭据管理器里。后续双击批处理就会直接运行,不会再弹密码框。
第三步:验证效果
启动任务管理器,在“详细信息”标签页中找到 ProblemApp.exe 进程,查看“用户名”列,应该显示你设定的受限账户名称。
这样能防住什么?
- ❌ 进程无法读取
C:\Users\你的真实用户名\AppData\Local下的历史记录、Cookie等。 - ❌ 进程无法写入系统目录(如
C:\Windows、Program Files)。 - ❌ 进程无法访问其他用户的个人文件夹。
- ❌ 修改系统设置(如注册表
HKLM、服务、计划任务)会失败或被拒绝。
简单说:它只能在自己的用户配置目录(C:\Users\AppSandbox)和某些公共目录(如 C:\Users\Public、Temp)内活动。
可能遇到的问题与注意事项
1. 软件直接无法启动
部分软件要求管理员权限(如需要写注册表 HKEY_LOCAL_MACHINE,或安装驱动)。对于这种情况,该方案可能不适用。可以考虑:
- 寻找替代软件。
- 使用便携版。
- 放在虚拟机或沙箱中(如 Sandboxie、Windows Sandbox)。
2. 文件路径或配置丢失
软件会认为自己是“AppSandbox”用户运行,因此保存的设置、聊天记录、缓存都会写在 C:\Users\AppSandbox 下,而不是你原来的账户目录。如果你希望它与你的主账号共用某些数据,需要手动修改该软件的配置文件路径,或使用符号链接(不推荐非高级用户操作)。
3. 凭据安全吗?
/savecred 将密码保存到当前用户的 Windows 凭据管理器(control.exe /name Microsoft.CredentialManager),没有直接明文存储。但本用户下的其他程序也可以通过 runas /savecred 启动该受限账户下的任意程序,因此不要将其用于真正敏感的账户。此外,如果电脑处于共享环境,建议不要使用 /savecred,而是每次手动输入密码。
4. 如何清除保存的密码?
cmdkey /list # 查看所有保存的凭据
cmdkey /delete:目标名称 # 删除对应项
或者在“凭据管理器”中直接删除 Windows 凭据。
总结
不要用管理员权限运行那些没底线的软件。
一条批处理 + 一个普通账户,五分钟就能建立一道基础的权限隔离墙。虽然不能防一切(比如利用内核漏洞提权),但对于常见的“扫描我的浏览器历史记录”这类越界行为,足够让它无功而返。
这个方法也适用于任何你不完全信任,但又不得不在 Windows 上运行的软件。
你的隐私,值得多一道防护。
