首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么文件放在"C:\Users\<username>AppData\Local\VirtualStore\Program文件(X86)中?

为什么文件放在"C:\Users\<username>AppData\Local\VirtualStore\Program文件(X86)中?
EN

Stack Overflow用户
提问于 2010-07-10 20:53:01
回答 2查看 48.3K关注 0票数 36

我最近更新了我的Visual Basic 6.0应用程序,现在添加了一个exe.manifest文件来阻止UAC虚拟化。在应用此更新后,一些用户无法找到他们的数据文件(Access MDB文件),在系统搜索后,他们最终在C:\Users\<username>AppData\Local\VirtualStore\Program Files(x86)中找到了它。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-11 10:11:32

我的猜测是您的清单显示为asInvoker,并且您的应用程序试图写入程序文件。当用户在没有清单的情况下运行它时,它会写入Program Files的虚拟存储,这是他们后来发现一些文件的路径。当他们使用清单运行时,它根本无法写入(由于访问被拒绝),但要么是你的应用程序对他们隐藏了错误,要么是他们不理解错误,所以他们没有向你提及。

短期修复-使用requireAdministrator清单。这会激怒用户,但写入会成功。长期修复--不要写给ProgramFiles。有更好的针对每个用户的选项,比如AppData。

票数 8
EN

Stack Overflow用户

发布于 2010-07-10 20:58:29

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

代码语言:javascript
运行
复制
C:\Users\<User Name>\AppData\Local\<Manufacturer>\<Product>\<Product Version> 

目录。

例如,我的AlgoSim软件写入

代码语言:javascript
运行
复制
C:\Users\<User Name>\AppData\Local\Rejbrand\AlgoSim\2.0

当然,

代码语言:javascript
运行
复制
C:\Users\<User Name>\AppData\Local\

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

代码语言:javascript
运行
复制
SHGetFolderPath(0, CSIDL_LOCAL_APPDATA, 0, SHGFP_TYPE_CURRENT, @path);

为了这个。

从Windows Vista开始,试图写入Program Files (或Program Files (x86))文件夹的非提升权限运行的应用程序实际上会在不知不觉中写入VirtualStore文件夹。微软认为这比程序失败(由访问限制引起)要好。事实上,多亏了这一点,大多数将设置保存在Program Files文件夹中的旧程序将继续在Windows Vista+上运行,每个用户都将获得自己的设置作为奖励,尽管最初的软件制造商没有考虑到这一点。

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

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

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3219255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档