C# VirtualStore不在Vista x64上工作

C# VirtualStore不在Vista x64上工作,c#,visual-studio-2008,win64,virtualstore,C#,Visual Studio 2008,Win64,Virtualstore,我有一个小托盘应用程序,它想写入程序文件目录下自己的文件夹。我知道这不是一个最终的设计,我会修复它,但首先我想了解它是如何工作的 在32位Vista机器上运行它会将文件写入VirtualStore,它的工作方式与它应该的一样 但是,当在Vista 64位机器上安装此程序时,我立即遇到一个未经授权的Access异常,因为我试图写入程序文件(和程序文件(x86))中的目录 VirtualStore重定向在Vista 64位上似乎不起作用。有什么想法吗 这是一个在Visual Studio 2008中

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

在32位Vista机器上运行它会将文件写入VirtualStore,它的工作方式与它应该的一样

但是,当在Vista 64位机器上安装此程序时,我立即遇到一个未经授权的Access异常,因为我试图写入程序文件(和程序文件(x86))中的目录

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


这是一个在Visual Studio 2008中编写的C#应用程序,我使用FileStream obj将流持久化到磁盘。

有关于错误的详细信息吗?
您是否使用系统内部工具来监视执行/访问错误?

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

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

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

我怀疑在这个仿真层中有额外的保护,防止程序试图更改程序文件下的内容。或者,在Vista 64位(或更可能的仿真层)下,ACL设置得更好


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

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


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

让这一个开着,然后关上。人们为我做的,谢谢!是的,我知道,我将使用AppData或独立存储重写它,但它仍然让我感到恼火,我在32位和64位下的行为有所不同。我不明白为什么。查看更新以了解可能性(或者给雷蒙德·陈写一封关于旧的新事物的信,但如果他对你的新事物有点嘲弄,请不要感到惊讶:-)。谢谢你,帕克斯!wierd(er)的问题是,当我编译它为64位并创建一个64位安装程序时,它仍然不起作用(。您可能会发现Vista64也在保护程序文件以及x86变体。您可以检查该目录的ACL/权限吗?并且您可能会在32位框中更易于管理。