2008-11-17 73 views
1

我正在尝试编写可在Windows Vista和XP上运行的安装程序(通过创建.vdproj)。我唯一发现的是,当我尝试在Vista上运行它时,我在安装程序中包含的文件安装了用户组的只读权限。这是一个问题,因为应用程序需要从这些文件读取/写入。我能够实现它的唯一方法是“以管理员身份运行”或实际更改权限。有谁知道如何让这些文件对任何人开放?谢谢。使用.NET安装程序的Windows Vista上的文件安全

回答

6

Program Files文件夹及其内容仅供标准用户阅读。这是设计的,你会发现这也是Windows XP的情况。这只是在Windows XP上,很多人随时都有管理员权限运行,你可能会逃避它。如果您想要将您的应用分配到商业环境中,您很快就会发现它在那里也无法在XP上运行。

如果标准用户需要写入权限,解决方法是不要将文件放置在程序的可执行文件夹中。将它们放在Application Data文件夹中。对于大多数的XP机器,这将是在这里:
C:\ Documents和Settings \所有用户\应用数据\你的应用程序

然而,情况并不总是这样的情况,它是在Vista上有些不同,无论如何,所以请确保您通过编程环境提供的机制获得该路径。在.Net中,您可以使用Environment.GetFolderPath()函数。

+0

什么是.NET应用程序提供的“机制”? – skb 2008-11-18 04:38:22

+0

乔尔,文件夹.. \所有用户\应用程序也是只读标准用户。建议在安装时添加一个可写的子文件夹。 – RoadWarrior 2008-11-19 21:16:18

1

要添加一些细节乔尔的回答是:

  • 在Win2K和XP,CSIDL_APPDATA应该用于每个用户,漫游。在Vista中,这是FOLDERID_RoamingAppData。

  • 在Win2K和XP中,CSIDL_LOCAL_APPDATA应该用于每用户,非漫游。在Vista中,这是FOLDERID_LocalAppData。

  • 在Win2K和XP,CSIDL_COMMON_APPDATA应该用于每台机器,即一个应用的所有用户。在Vista中,这是FOLDERID_ProgramData。

注意:这最后一个文件夹通常只读给非管理非电源用户。推荐的解决方案是在应用程序安装期间创建一个读/写子文件夹。

编辑:为了获得这些常量的使用托管代码的特定机器上的实际位置,尽量System.Environment.GetFolderPath与定义here的常量。另一个有用的链接是here

相关问题