2010-05-11 53 views
1

我正在處理作爲特殊非特權用戶運行的應用程序。我希望能夠輕鬆檢查用戶是否可以讀取給定的文件。看起來這應該很容易,即使當我進入Windows資源管理器中的文件並且看到讀取權限被選中時,它有時似乎仍然有某些東西阻止用戶讀取文件(例如父目錄用戶無法瀏覽)當我嘗試以編程方式讀取它作爲用戶。什麼是檢查特定用戶是否可以訪問特定文件的好方法?

用戶沒有控制檯登錄權限,所以我不能僅以用戶身份登錄並嘗試讀取該文件。

所以......

如果我想知道,「難道UserBob訪問文件c:\specialPath\specialFile,什麼是要找出一個簡單的方法?順便說一句,我的環境是Windows Server 2003

更新:爲了澄清,我想要做這樣的事情:

if UserHasAccess(UserBob, @"c:\specialPath\specialFile") 
{ 
doStuff(); 
} 
else 
{ 
// error handling 
} 

更新:

我收到一個答案,提示我只是試圖打開該文件。問題是打開文件的代碼在特殊的系統帳戶下運行,並封裝在另一個庫中。因此,讓我問一下:如何讓我的代碼試圖打開以特殊系統帳戶運行的文件。假設我有管理員對代碼運行的機器的訪問權限。

回答

1

找出最簡單的方法就是嘗試打開文件。如果失敗,則無法訪問。

我假設你是真的試圖找出是爲什麼 UserBob無法訪問該文件。不幸的是,你沒有太多可以做的作爲 UserBob找出來。特別是,如果可能的話,它將被視爲泄露信息的脆弱性。

作爲管理員,您可以執行的操作是對該特定文件啓用審計。右鍵單擊該文件,選擇安全性,然後轉到審覈選項卡。另一種選擇是使用進程監視器來監視程序運行時發生了什麼。

+0

好的,我應該更具體。我正在使用一些.net代碼。有沒有簡單的方法來嘗試打開文件爲'UserBob'? – 2010-05-12 03:09:24

+0

UserBob是一個與您的應用程序運行的用戶不同的*用戶嗎? – 2010-05-12 03:38:06

+0

是的,codeka,'UserBob'是與運行應用程序的用戶不同的用戶。事實上,UserBob和運行該應用程序的用戶都可能是沒有直接登錄權限的「系統」帳戶。 我想有一些代碼,說是這樣的:如果 UserHasAccess(UserBob,@ 「C:\ specialPath \ specialFile」) { doStuff(); } 其他 { //錯誤處理 } – 2010-05-12 13:39:48

相關問題