我想在獨立於用戶的哺乳期中爲我的應用程序創建日誌文件。 AFAIK C:\ProgramData
是很好的地方。在C: ProgramData中創建用戶獨立日誌文件
我試着這樣說:
if not DirectoryExists('C:\ProgramData\MyApp') then
CreateDirectory('C:\ProgramData\MyApp', nil);
LogFileStream := TFileStream.Create('C:\ProgramData\MyApp\LogFile01.txt', fmCreate, (fmOpenRead or fmShareDenyNone));
這種方法的問題是創建申請不具有Properties->Security->Group or user names
Authenticated Users
也不Everyone
。
這會導致其他用戶無法修改創建的文件。
但我怎麼能做到這一點,也有其他用戶在修改創建的文件。
我認爲必須有可能在這裏有這個權限的文件。有些文件具有此權限,例如C:\ProgramData\Microsoft\Windows\Ringtones\Ringtone *.wav
也許無論是在
1)以某種方式創建「MyApp的」在C:\ProgramData
與Authenticated Users
或Everyone
許可文件夾,這將導致與TFileStream
相同的權限自動創建文件或
2.)以某種方式告訴TFileStream
創建所需的權限或
3.)以某種方式更改文件權限後創建一些API函數或
4.)其他一些方法?
請勿使用硬編碼的'C:\ ProgramData'。使用Windows API檢索此路徑(FOLDERID_ProgramData/CSIDL_COMMON_APPDATA) – kobik