2009-01-08 107 views
2

我試圖從網絡共享運行.Net 2.0應用程序而不使用FullTrust權限集。我想創建一個新的權限集,其中只有我的程序集需要的權限,然後將其分配給共享路徑上的exe。是否有可能做到這一點? 從我的有限實驗中,我發現如果沒有FullTrust,我無法從網絡共享中獲得任何應用程序的工作。我嘗試了創建一個新的燙髮套裝,並嘗試了一切和其他燙髮套裝,但都沒有效果。有沒有人有這方面的經驗?.Net 2.0應用程序從網絡共享沒有FullTrust

回答

0

在.NET 3.5之前,您需要完全信任共享以從那裏運行.NET應用程序。 Shawn解釋了這個here:「沒有對默認CAS系統進行一些修改,我們處於加載包含安全對象的程序集並授予它們策略的永無止境的循環中......進入FullTrust列表。

在.NET 3.5這一限制是克服「...默認授予FullTrust的設置,使他們採取行動一樣,如果他們發動關閉電腦直接的」(肖恩的另一篇文章here

2

您需要使用強名稱爲您的程序集簽名,然後將強名稱的cas-policy設置爲完全信任。

爲FullTrust設置與您的強名稱簽署的所有代碼最簡單的方法是:

caspol.exe -q -m -ag MyZone -strong -hex [HexCodeOfYourStrongName] -noname -noversion FullTrust -name MyCode -description "Code trust for my code"'; 

如果您的代碼拆分到多個組件,你需要每一個組件與強名稱進行簽名。您可能需要設置SecurityPermission -Attribute具有鏈接需求,即調用者接管的安全性。

[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.ControlPrincipal)] 
0

給人強烈的命名assmebly FullTrust權限聽起來不錯,但不幸的是我的程序集的引用幾個第三方COM的Dll這也必須是強名稱,如果我強命名的主要組件。我猜測給予FullTrust到Shawn給出的路徑是最好的解決方案: CasPol.exe -pp off -m -ag 1.2 -url file:// \ ShawnFa-Srv/Tools/* FullTrust

+0

你也可以用你的強名稱命名第三方dll,或者明確地爲這些文件設置強壯的選項。這些COM-dll是否需要安裝在目標機器上的應用程序? – 2009-01-08 10:43:11

相關問題