2011-09-06 34 views
0

有沒有方法在代碼中檢測到DLL是否被阻止被加載,因爲它是從互聯網下載的?我知道caspol.exe實用程序可以讀取權限設置,但如果可能的話,我想留在代碼中。檢測到來自互聯網並被CASPOL「封鎖」的DLL

+0

嗯,當然,Assembly.LoadFrom()調用會引發異常。你在說什麼? –

+0

@Hans:這是針對從本地網絡複製文件的實用程序,我希望能夠檢測到阻止的DLL以發送通知,說明存在問題。我不想加載每一個只是爲了看看我能不能。但你是對的,這是一個解決方案... –

回答

1

被阻止的內容由NTFS備用數據流控制,可以通過sysinternals的命令行實用程序(名爲streams)刪除。這是ADS上Wikipedia的報價。

微軟推出存儲 細節上下載文件的原產地在備用數據流 附加到文件中,以保護用戶免受下載的文件 可能存在風險的努力附件執行服務。

它跟蹤文件的來源,因此如果它來源於互聯網,它會應用不可信的安全策略。刪除流將刪除文件來自不可信來源的記錄。這與右鍵單擊文件,查看屬性並選擇取消阻止具有相同的影響。這也與使用caspol使dll完全信任相同。

下面創建一個與文件測試關聯的零字節流。

echo hello > test:stream 

下面的項目codeproject有一些示例代碼來處理它們。我相信你需要從非託管代碼中刪除它們。

Accessing alternative data-streams of files on an NTFS volume

+0

我不清楚這是如何與CASPOL DLL阻塞相關的。你能舉一個更具體的例子嗎? –

+0

我指的是跟蹤下載文件源自不可信源(因此被阻止)的機制。已更新,以幫助澄清。 – TheCodeKing