我一直在測試我的應用程序以查看它在非管理用戶運行時的工作情況,並發現文件處理問題。當嘗試覆蓋文件時,如果文件是由管理員用戶創建的,則會出現UnauthorizedAccessException。使用非管理用戶的文件處理
寫出文件時,首先將文件創建爲.tmp文件,然後使用File.Copy覆蓋原始文件。 .tmp文件被創建,但File.Copy失敗。我的文件被寫入公共目錄(XP中的「C:\ Documents and Settings \ All Users \ Application Data」)。
我該怎麼做才能讓所有用戶都能完全控制應用程序文件?
我發現這一點:
System.Security.AccessControl.DirectorySecurity sec =
System.IO.Directory.GetAccessControl (directory);
FileSystemAccessRule accRule = new FileSystemAccessRule (Globals.userIdentity,
FileSystemRights.FullControl, AccessControlType.Allow);
sec.AddAccessRule (accRule);
威爾做了以上所有文件都位於解決這個問題的目錄?或者我將不得不爲每個文件做些事情?如果是的話那是什麼東西?
編輯:
非管理員用戶不能修改管理員用戶創建的文件。不是很好。我需要所有用戶都可以編輯所有文件。當文件最初創建時,是否沒有可以設置的某種權限?
某些文件可能需要從應用程序外部訪問。既然如此,我該怎麼辦? – 2009-09-17 22:44:05
您可以嘗試使用用戶自己的應用程序數據文件夾。默認情況下,他們應該有權訪問,而不是管理員。 您可以通過Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 獲取用戶的路徑。這意味着應用程序數據不會在用戶之間共享。 HTH。 – 2009-09-18 08:17:16
應用程序數據需要爲所有用戶共享。這就是我使用All Users \ Application Data目錄的原因。它只是以管理員用戶身份登錄時創建的文件不能由非管理員用戶修改。 – 2009-09-18 21:20:59