2008-09-17 42 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

相關問題