2010-09-26 82 views
1

好吧,所以我是一個C新手。如何測試文件是否僅在Windows上讀取。測試一個文件/目錄是否只讀

我試圖得到一些GetFileAttributes函數,但無濟於事。

給定一個文件的路徑,測試它是否只讀的正確方法是什麼?

編輯:

所以我仍然堅持這一個。我想檢查用戶是否有權限在C:\ Program Files文件中添加和編輯文件...我似乎無法得到任何建議的工作。

當我使用!(GetFileAtrributes(路徑)& FILE_ATTRIBUTES_READONLY)時,它表示目錄不是隻讀的。然後我試着寫一個文件,並測試它是否工作:

strcat(path,"\\testFile000"); 
FILE *test = 0; 
test = fopen(path,"w"); 
int i = fwrite("ab",1,sizeof("ab"),test); 

但是當我做這個測試是不空,我== 3,沒有文件出現在OS。

任何想法?

+0

對不起,誤解了你的問題。 – 2010-09-27 00:09:07

+0

[有效的文件權限工具的api在Windows]的可能重複(http://stackoverflow.com/questions/3021698/effective-file-permissions-tools-api-in-windows) – bmargulies 2010-09-27 00:49:44

回答

2

GetFileAttributes是正確的Windows調用 - 參見MSDN example使用

的示例測試只讀和測試是檢查dwAttrs & FILE_ATTRIBUTE_READONLY,如果只讀文件被認爲將是非零。

2

您忘記了ACL。一個文件可以將其只讀位清除,但仍然具有限制性ACL。你可以調用CreateFile並檢查返回碼。或者調用`AuthzAccessCheck'。

相關問題