首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VirtualStore在Vista x64上不起作用

VirtualStore在Vista x64上不起作用
EN

Stack Overflow用户
提问于 2009-02-06 10:42:25
回答 3查看 1.2K关注 0票数 1

我有一个小托盘应用程序,它想要写入到Program Files目录下自己的文件夹中。我知道这不是一个终极设计,我会修复它,但首先我想了解它是如何工作的。

在32位的Vista机器上运行它,它会将文件写入VirtualStore,并且它会正常工作。

但是当我在Vista64位机器上安装它时,当我试图写入Program Files (和Program Files (x86))中的目录时,我马上就会遇到一个UnauthorizedAccessException。

VirtualStore重定向似乎在Vista64位上不起作用。有什么想法吗?

这是一个用Visual Studio2008编写的C#应用程序,我使用FileStream对象将流持久化到磁盘。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-06 13:27:14

因此,我实际上是通过将所有项目编译到目标平台x86来实现这一点的。因此,x64不能在Vista64上与VirtualStore一起工作,也不能编译成“任何CPU”。我必须为整个解决方案设置它(在Configuration Manager中),仅为每个单独的项目设置它是行不通的。

是时候使用AppData文件夹或IsolatedStorage重写它了。谢谢你的帮助!

票数 1
EN

Stack Overflow用户

发布于 2009-02-06 10:56:31

有更多关于错误的信息吗?

您是否使用sysinternals工具来监控执行/访问错误?

也可以查看事件查看器中的错误。

票数 1
EN

Stack Overflow用户

发布于 2009-02-06 11:03:59

我现在就把它修好。无论如何,你都不应该把你的东西写到那个目录中,这违反了指导方针。当多个用户同时登录到服务器时,您的产品将无法工作,即使是VISTA之前的版本也是如此。

Vista64位会检测到你是一个32位的应用程序,并会自动将你修改“程序文件”的尝试重定向到“程序文件x86”。事实上,它让你完全相信你是在32位系统上运行的(参见here)。

我怀疑在这个模拟层中有额外的保护,防止程序试图改变Program Files下的东西。或者,在Vista 64位(或更可能的模拟层)下,ACL设置得更好。

结论:不要做你正在做的事情,微软已经告诉我们不要这么做很长一段时间了。

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

https://stackoverflow.com/questions/519828

复制
相关文章

相似问题

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