2008-09-17 44 views
1

我们有一个NET应用程序被安装到Program Files文件夹中。 应用程序本身写入一些文件并创建一些目录到其应用程序文件夹。 但是,当一个正常的Windows用户试图使用我们的应用程序,它崩溃,因为该用户没有写入应用程序文件夹的权限。 默认情况下,所有用户都有写入权限的WinXP和WinVista中是否有任何文件夹?所有用户文件夹或类似的东西?WinXP和WinVista中是否有一个文件夹,所有用户都有写入权限?

回答

2

没有这样的文件夹中。

但是你可以创建一个。

有CSIDL_COMMON_APPDATA它在Vista将映射到%ProgramData%(C:\ ProgramData)和XP映射到c:\的Documents and Settings \ AllUsers的\应用数据

随意在里面创建一个文件夹安装程序并设置ACL,以便每个人都可以写入该文件夹。

请记住COMMON_APPDATA已在公共控件库的第5版中实现,这意味着它在Windows 2000及更高版本中可用。在NT4中,您可以在安装目录中创建该文件夹,并且在Windows 98及其之下,由于这些系统无论如何都没有权限系统,因此无论如何都无关紧要。

下面是一些示例InnoSetup代码来创建该文件夹:

[Dirs] 
Name: {code:getDBPath}; Flags: uninsalwaysuninstall; Permissions: authusers-modify 

[Code] 


function getDBPath(Param: String): String; 
var 
    Version: TWindowsVersion; 
begin 
    Result := ExpandConstant('{app}\data'); 
    GetWindowsVersionEx(Version); 
    if (Version.Major >= 5) then begin 
    Result := ExpandConstant('{commonappdata}\myprog'); 
    end; 
end; 
+0

太棒了,这正是我一直在寻找。 – 2009-01-12 17:10:06

0

我不确定是否有一个所有非管理员用户都有权写入的单一路径。

我认为正确的人会<User>\Application Data

相关问题