WinXP和WinVista中是否有一个所有用户都具有写入权限的文件夹?
-
09-06-2019 - |
题
我们有一个 NET 应用程序安装到 Program Files 文件夹中。应用程序本身会写入一些文件并在其应用程序文件夹中创建一些目录。但是,当普通 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 代码:
[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
不隶属于 StackOverflow