我有一個應用程序,我正在執行log4net.dll
。我在不同的電腦上安裝了這個應用程序,並且工作正常在安裝過程中授予寫入權限
我的應用程序安裝在C:\ ProgramFile \ myApplication。
但問題是當用戶在ProgramFile下沒有寫入權限時。 它不寫一個日誌?
我想知道是否有任何方法可以在安裝過程中爲文件夾分配所有訪問權限。我經歷了不同的文章,但找不到任何滿意的答案。
任何幫助,將不勝感激。
我有一個應用程序,我正在執行log4net.dll
。我在不同的電腦上安裝了這個應用程序,並且工作正常在安裝過程中授予寫入權限
我的應用程序安裝在C:\ ProgramFile \ myApplication。
但問題是當用戶在ProgramFile下沒有寫入權限時。 它不寫一個日誌?
我想知道是否有任何方法可以在安裝過程中爲文件夾分配所有訪問權限。我經歷了不同的文章,但找不到任何滿意的答案。
任何幫助,將不勝感激。
你不應該把你的日誌文件放在應用程序的(子)文件夾中! 把它們放在確定每個用戶都有寫入權限的地方,例如$ APPDATA或$ LOCALAPPDATA(我更喜歡的日誌文件)
舉例log4net的配置:
<file value="${APPDATA}/My Company/My Product/Logs/My Application.log" />
從這裏取:
我曾在一個類似的問題維克斯安裝程序中,這裏是代碼:
DirectoryInfo directoryInfo = new DirectoryInfo(session["..."]);
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
SecurityIdentifier localService = new SecurityIdentifier(WellKnownSidType.LocalServiceSid, null);
FileSystemAccessRule directoryAccessRule = new FileSystemAccessRule(localService, FileSystemRights.FullControl, AccessControlType.Allow);
directorySecurity.AddAccessRule(directoryAccessRule);
directoryInfo.SetAccessControl(directorySecurity);
本地服務帳戶被授予完全訪問的文件夾。只需更改將使用您的應用程序的用戶的SID的本地服務用戶的SID。