2009-01-29 60 views
2

当我的程序第一次安装时,它会在用户的AppData目录中放置一个文件,然后程序会定期写入该文件。问题出在Vista中,写入的不是用户的AppData目录中的文件,而是在“VirtualStore/ProgramData”目录中对该文件进行复制。用户的AppData目录中的原始文件永远不会改变,程序运行时似乎只能访问VirtualStore目录中的文件。如何更改文件权限以阻止Vista写入VirtualStore目录中的文件?

有没有办法从C#应用程序内部更改该文件的权限,以便我的程序将写入AppData目录中的原始文件而不是VirtualStore目录中的文件?

感谢,

杰夫

+0

您是按计算机还是按用户安装程序?您的安装程序应用程序“提升”了吗?以管理员身份运行? – reuben 2009-01-30 08:11:56

回答

1

http://msdn.microsoft.com/en-us/library/bb756973.aspx的UAC文档可帮助您解决这个问题。

这听起来像你需要添加应用程序清单。

当您的应用程序包含指定了“requestedExecutionLevel”值的应用程序清单时,Vista的注册表和文件系统虚拟化将被关闭。

查看详情http://msdn.microsoft.com/en-us/library/bb756929.aspx

如果您以前没有在非管理条件下测试过您的应用程序,您可能会发现在关闭Vista的虚拟化后需要更改一些代码。