关于windows:WinXP和WinVista中是否有所有用户都有写权限的文件夹?

Is there a folder in both WinXP and WinVista to which all users have writing permissions?

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


没有这样的文件夹。

但你可以创建一个。

CSIDL_COMMON_APPDATA 在 Vista 中映射到 %ProgramData% (c:\\\\\\\\ProgramData),在 XP 中映射到 c:\\\\\\\\Documents and Settings\\\\\\\\AllUsers\\\\\\\\Application Data

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

请记住,COMMON_APPDATA 是在通用控件库的第 5 版中实现的,这意味着它在 Windows 2000 及更高版本中可用。在 NT4 中,您可以在安装目录和 Windows 98 及以下系统中创建该文件夹,因为这些系统没有权限系统,所以无论如何都没有关系。

这里是一些用于创建该文件夹的示例 InnoSetup 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[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;


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

我认为正确的应该是 <User>\\Application Data