2009-08-30 89 views
5

我剛讀的CLI規範關於SecurityExceptions以下在方法調用:當CIL轉換爲本地代碼,而不是在運行時可能會出現.NET CLR何時評估安全屬性?

的安全檢查。

如何Microsoft實施的處理呢?

如果,例如,只有某個用戶組被允許訪問某些類,我已經放置在安全屬性檢查該組。

如果用戶運行應用程序,它是即時編譯,以及可能的安全檢查是在那個時候在運行時進行,而不是。

如果是這樣,那麼抖動緩存本機映像,因此當我在以後的時間改變用戶的組也可能帶來問題(即緩存本地圖像不反映他更新的權限)?或者它每次運行時都會出現抖動,除非我預安裝本地映像?我仍然不太確定本機圖像緩存的工作原理。

+0

問得好!我會一直在尋找答案。 :-) – 2009-08-30 14:57:54

回答

2

任何jitted圖像只在生成它的同一安全上下文中有效。

這適用於緩存和ngen:ed程序集。

一旦加載器看到的是,當前的安全上下文不同,因爲它會加載IL圖像和JIT裝配。

這就是爲什麼你不能NGEN您的PC上的圖像,並分發到別人。

這也適用於.Net核心程序集。在安裝時它們是ngen:ed(或放置在ngen隊列中)以匹配計算機上的安全上下文。

你可以閱讀更多關於它在這裏: msdn ngen.exe

+0

謝謝!現在我可以再次安然入睡。 :) – Botz3000 2009-08-30 18:17:58