我得到了公共應用程序數據文件夾來存儲我的應用程序相關文件。例如日誌文件和ini配置文件。我使用下面的代碼:Delphi CommonAppDataFolder好像不可寫
const
CSIDL_COMMON_APPDATA = $0023;
function TSpecialFolders.GetSpecialFolder(
const ASpecialFolderID: Integer): string;
var
vSFolder : pItemIDList;
vSpecialPath : array[0..MAX_PATH] of Char;
begin
SHGetSpecialFolderLocation(0, ASpecialFolderID, vSFolder);
SHGetPathFromIDList(vSFolder, vSpecialPath);
Result := vSpecialPath;
end;
function TSpecialFolders.GetCommonDocumentsFolder: string;
begin
result := GetSpecialFolder( CSIDL_COMMON_DOCUMENTS);
end;
這適用於我的Windows 7框,並允許我的應用程序寫入文件夾和文件。
在客戶PC上(我認爲它是舊版本的Windows,因爲屏幕截圖在開始按鈕上有「開始」一詞)我的應用程序無法將文件寫入該路徑。
在我的PC返回的路徑是:
C:\ ProgramData \
我增加額外的文件夾,如下所示:
myCompany的\ MYAPP \日誌\
myCompany的\ MYAPP \ db \
將文本文件保存在這些文件夾中。
在我客戶的電腦在函數返回:
C:\ Documents和Settings \所有用戶\應用數據
我無法文本文件寫入到的目錄結構存在。
有沒有更好的功能,我應該使用,或更好的通用文件夾?
編輯爲SilverWarrior
這些都是我的客戶PC上的特殊文件夾。
AppDataFolder:C:\ Documents和Settings \管理員\應用數據 COMMONAPPDATAFOLDER:C:\ Documents和Settings \所有用戶\應用數據 CommonDocumentsFolder:C:\ Documents和Settings \所有用戶\文件 LocalAppDataFolder:C :\ Documents and Settings \ Admin \ Local Settings \ Application Data MyDocumentsFolder:C:\ Documents and Settings \ Admin \ My Documents
LocalAppDataFolder在路徑中有「Admin」,表示需要管理員權限。是對的嗎?
Tey以管理員身份運行你的Delphi並重試。如果這與你的德爾福一起工作,那麼解決方案是給予程序管理權限我會告訴你以後 – 2014-09-24 16:08:56
預計寫入共享文件夾的權限受到限制 – 2014-09-24 16:55:54
不,@Jens,以管理員權限運行永遠不是解決方案。這是黑客,可以讓你避免*找到解決方案。這種情況下的解決方案似乎是要求客戶的系統管理員正確配置環境。另一個解決方案是使日誌和數據庫目錄可配置。但即使如此,*配置*仍然需要寫在某個地方。 – 2014-09-24 16:57:34