目前我使用這個功能,可以根據JCL代碼,其正常工作:如何使用Delphi來測試目錄是否可寫?
function IsDirectoryWriteable(const AName: string): Boolean;
var
FileName: PWideChar;
H: THandle;
begin
FileName := PWideChar(IncludeTrailingPathDelimiter(AName) + 'chk.tmp');
H := CreateFile(FileName, GENERIC_READ or GENERIC_WRITE, 0, nil,
CREATE_NEW, FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE, 0);
Result := H <> INVALID_HANDLE_VALUE;
DeleteFile(FileName);
end;
有什麼我可以與標誌改進? 測試可以在沒有實際創建文件的情況下完成嗎? 或者這個功能甚至已經在RTL或Jedi庫之一中可用?
不爲你的代碼工作?有沒有關於你不喜歡的這種方法?這確實是一種非常簡單(最簡單的)測試目錄寫入訪問的方式。儘管我從來沒有在Windows安全方面做過很多工作,但我猜想另一種方法是使用'GetFileSecurity'函數。 – 2010-08-30 10:01:15
@Andreas看到我的編輯 - 如果我可以通過調用一個現有的庫函數來替換這個函數(甚至可能支持多平臺),這肯定會有所改進。 – mjn 2010-08-30 11:41:04
我實際上看不到任何那些不在RTL中的東西 - 這是JCL調用嗎? – 2010-08-30 13:01:31