为什么文件被放置在“C:\Users\<用户名>AppData\Local\VirtualStore\Program Files(x86)”中?

2023-12-14

我最近更新了我的视觉基本6.0应用程序,现在包含一个 exe.manifest 文件以防止UAC虚拟化。应用此更新后,一些用户找不到他们的数据文件(AccessMDB 文件),经过系统搜索后,他们最终在C:\Users\<username>AppData\Local\VirtualStore\Program Files(x86).

该文件夹区域的用途是什么?文件如何/何时移动到该区域?我们如何预防呢?我现在希望我的应用程序使用.manifest这种事不会再发生了。当应用程序被放置在 UAC 虚拟化中时,文件是否在使用清单之前放置​​在那里?


未以提升的权限运行的应用程序不应访问Program Files and Program Files (x86)目录。这对于安全来说是有好处的。此外,在多数情况下当开发人员告诉他的程序将数据保存在Program Files文件夹,比如说程序设置,他完全忘记了程序设置应该是每个用户的事情!也就是说,本地计算机上的每个用户都应该能够使用该程序而不影响其他用户。换句话说,一个表现良好的应用程序应该将其设置保存在

C:\Users\<User Name>\AppData\Local\<Manufacturer>\<Product>\<Product Version> 

目录。

例如,我的 AlgoSim 软件写入

C:\Users\<User Name>\AppData\Local\Rejbrand\AlgoSim\2.0

当然,

C:\Users\<User Name>\AppData\Local\

必须在运行时动态查找路径。使用

SHGetFolderPath(0, CSIDL_LOCAL_APPDATA, 0, SHGFP_TYPE_CURRENT, @path);

为了这。

自 Windows Vista 以来,未以提升的权限运行的应用程序会尝试写入Program Files (or Program Files (x86)) 文件夹实际上会在不知不觉中写入 VirtualStore 文件夹。微软认为这比程序失败(由访问限制引起)要好。事实上,由于这一点,大多数旧程序将其设置保存在Program Files文件夹将继续与 Windows Vista+ 一起使用,并且每个用户都将获得自己的设置,作为奖励,尽管原始软件制造商没有想到这一点。

您可以使用清单告诉 Windows 您的应用程序知道 VirtualStore 并且 Windows 不应在运行时更改任何路径。但如果你真的希望能够写信给Program Files文件夹,那么我认为您每次都必须以提升的权限运行应用程序,这通常是不可取的。

有关如何创建清单以使程序在每次执行时显示 UAC 提示以及如何禁用 VirtualStore 的详细信息,已在之前的几个 Stack Overflow 问题中得到解决。请随意使用搜索框!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么文件被放置在“C:\Users\<用户名>AppData\Local\VirtualStore\Program Files(x86)”中? 的相关文章

  • 在 Vista 上捕获“程序停止运行”

    在 Vista 上 我遇到了应用程序崩溃处理程序的问题 基本上 如果发生 SEH 无法捕获的意外情况 我会收到此弹出窗口 其中包含 应用程序停止工作 blablabla 关闭程序 调试程序 也就是说 在我使用系统控制面板 启用错误报告后 您
  • 是否可以在不启动另一个进程的情况下提升UAC进程

    我想知道程序是否可以通过 UAC 提示来提示用户提升自己的权限 而无需启动另一个进程 我在互联网上找到的所有示例似乎都是 ShellExecute runas 它创建了一个具有提升权限的新进程 如果这是不可能的 那么我想我最好的解决方案是创
  • 如何防止 Vista 要求 patch.exe 提升权限?

    很抱歉 这不是一个直接的编程问题 但我最近换了一台新的 Vista 机器 我在其中保持 UAC 启用 请不要告诉我禁用它 这不是一个选项 每次我运行 gnu 的 patch exe 时 我都会收到一个来自 Vista 的提升对话框 如果我将
  • Ant + Vista 64:“无法找到tools.jar”(jre/jdk 冲突?)

    我正在尝试在 vista 64 环境中使用 ant 来构建一些 docbook xml 文件 但是 我无法解决此错误消息 有人有建议吗 C Users 罗伯特管理员 gt ant 无法找到tools jar 预计在 C Program Fi
  • 将32位dll转换为64位dll

    当我尝试在 64 位应用程序中使用它时 我有 32 位编译的 dll 但它无法加载 所以我想将dll转换为64位 当应用程序的平台从 任何CPU 或 x64 更改为 x86 时 它工作正常 但我想在 64 位下使用它 因为我要从 ASP 页
  • Windows 10:获得远程访问权限后,以 .\Administrator 身份远程启动 Quick Assist,无需 UAC,或暂时禁用 UAC

    我想要a script在这种情况下使用 无需管理员权限即可获得远程访问 远程启动快速协助 Administrator and not进行 UAC 对话 第 1 步通常通过 Quick Assist 完成 有时通过 Teams 屏幕共享完成
  • 由于win10的UAC,Xampp功能受到限制。如何修复它?

    我正在尝试安装 xampp xampp win32 7 0 0 0 VC14 installer 但收到此警告消息 提示 由于系统上激活了 UAC XAMPP 的某些功能可能受到限制 这是 xamp 警告消息截图 尽管我已经禁用了 UAC
  • 寻找有关在 Windows 7 上安装应用程序的“正确”方法的文档

    我正在使用一些遗留应用程序 10 15 年 并试图找到有关在 Windows 7 上安装和运行它们 以及任何用户应用程序 的 正确 方法的指导 而无需完全的管理员权限 换句话说 可执行文件 只读文件应存放在何处 用户数据 读写文件应存放在何
  • 如何将清单信息添加到delphi项目中

    添加最简单的方法是什么
  • 在 Windows 中打开演示模式?

    Windows Vista 具有 演示模式 您可以通过移动中心将其打开 我如何以编程方式打开它 我发现的唯一方法是打电话presentationsettings exe with start or stop直接地 我还发现这个链接描述了如何
  • 为按钮添加 UAC 防护罩并保留其背景图像?

    在 winforms 应用程序中使用 C 和 Net 4 0 是否可以将 UAC 屏蔽添加到按钮并保留按钮背景图像 如何 这就是我现在正在使用的 但它删除了图像 DllImport user32 dll public static exte
  • 如何检测Vista UAC是否启用?

    我需要我的应用程序根据是否启用 Vista UAC 来表现不同 我的应用程序如何检测用户计算机上的 UAC 状态 该注册表项应该告诉您 HKLM SOFTWARE Microsoft Windows CurrentVersion Polic
  • 如何在Vista下使用WIA 1进行开发?

    我在Vista SP1下使用VS2008 SP1 我的 Net 程序使用对 WIA Microsoft Windows 图像采集库 v2 0 的 COM 引用 我正在使用 CommonDialogClass ShowAcquireImage
  • 以编程方式自动填充 UAC 详细信息

    有没有办法通过编程方式在 Visa 中自动填写 UAC 登录名和密码 例如 出现UAC提示 您的程序会自动为您填写该信息 例如 一个程序会在 UAC 提示符中使用管理员用户名和密码自动填充该信息 SendKeys 无法将输入键发送到 UAC
  • cron 作业或 PHP 调度程序

    我使用 MYSQL 作为我的数据库 PHP 作为我的编程语言 我想运行一个 cron 作业 该作业将运行直到当前系统日期与我的数据库表中名为 PROJECT 的 截止日期 日期 列匹配 一旦日期相同的是 必须运行更新查询 这会将状态 项目表
  • .NET File.Exists 在 Windows\System32\Drivers 文件夹中不起作用?

    该过程已提升 并且我确保 VS 调试器中的路径是正确的 我使用 Environment GetFolderPath Environment SpecialFolder System 而不是对其进行硬编码 但 File Exists 仍然返回
  • 使用 CryptUnprotectData 解密 WEP wlan 配置文件密钥

    我正在尝试使用解密 WEP 配置文件的密钥加密解除数据保护 http msdn microsoft com en us library windows desktop aa380882 28v vs 85 29 aspx 我获取配置文件密钥
  • 使用 CreateRestrictedToken(LUA_TOKEN) 从提升的进程创建低/中进程

    我正在尝试从提升的进程创建中或低完整性进程 我知道还有其他类似的问题 但它们主要关注使用资源管理器或任务计划程序等解决方法 我想坚持使用CreateRestrictedToken CreateProcessAsUser 我认为一定可以以某种
  • 无法更新 .mdf 数据库,因为该数据库是只读的(Windows 应用程序)

    我使用 C 创建了一个数据库 Windows 应用程序 我的应用程序在 Windows XP 上成功运行 但在 Vista 或 Windows 7 系统上无法正确执行 我的应用程序显示类似以下内容的消息 无法更新 mdf 数据库 因为该数据
  • Vista幻影目录

    我们有一个程序 安装程序会检查配置文件是否存在 如果存在 它不会复制该文件 它假设用户已修改其配置文件并希望保留这些修改 不幸的是 这是一个 Vista 之前的应用程序 它将配置文件保存在 Program Files 中 问题是 如果你在重

随机推荐