我通過創建一個子文件夾I C解決了這個問題:\ ProgramData,使用方法描述here
bool modified;
DirectoryInfo directoryInfo = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyFolder");
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
FileSystemAccessRule rule = new FileSystemAccessRule(
securityIdentifier,
FileSystemRights.Write |
FileSystemRights.ReadAndExecute |
FileSystemRights.Modify,
InheritanceFlags.ContainerInherit |
InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly,
AccessControlType.Allow);
directorySecurity.ModifyAccessRule(AccessControlModification.Add, rule, out modified);
directoryInfo.SetAccessControl(directorySecurity);
規則由子文件夾和文件的繼承。在「MyFolder」中創建的所有文件和文件夾都可寫入Users組。
你是說你爲你的應用程序編寫了一個安裝程序,需要更改它生成的文件的權限? – insipid 2010-09-07 21:55:28
具有提升權限的*用戶* - 他們作爲什麼登錄?他們是否以管理員身份登錄以獲取提升的權限,然後以自己身份重新登錄以獲得正常的用戶權限?如果是這樣,他們正在訪問不同的'%APPDATA%'位置。 – slugster 2010-09-07 23:38:59
反過來。用戶以普通用戶身份登錄,管理員通過UAC提升提示安裝應用程序。 也許%APPDATA%不正確。它是Vista中的c:\ ProgramData – Fedearne 2010-09-08 06:54:13