我試圖讓IEXPLORER.EXE的版本在我DLL.However我得到這樣的警告每次的LinkDemand警告
警告1個CA2122:Microsoft.Security:「ApCkr.IEavailable()」調用到'FileVersionInfo.FileMajorPart.get()',它有一個LinkDemand。通過進行此調用,'FileVersionInfo.FileMajorPart.get()'間接暴露給用戶代碼。回顧下面的調用堆棧,可能會揭露一種方法來規避安全保護:
在MSDN(安全權限)和falgs中搜索加載後,我仍然無法知道我將如何擺脫此錯誤。我試圖
SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
,但不能得到它的工作,要麼
任何幫助,將不勝感激
#region IExplore
public string IEavailable()
{
bool IEversion;
FileVersionInfo.GetVersionInfo("C:\\program files\\\\Internet Explorer\\iexplore.exe");
FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo("C:\\program files\\\\Internet Explorer\\iexplore.exe");
int a = myFileVersionInfo.FileMajorPart;
if (a < 8)
{
IEversion = false;
}
else
{
IEversion = true;
}
return IEversion.ToString();
}
#endregion
在這裏等一下。在嘗試消除警告之前:**是否進行了徹底的安全審查?**是否確保即使通過部分受信任的代碼間接調用,鏈接要求的方法的間接暴露也是安全的?警告正試圖讓你安全。不要問「我怎麼關掉這臺煙霧探測器?」直到你確定它是虛驚一場;關閉正在運行的正在運行的煙霧探測器是燒燬建築物的好方法。 – 2012-03-04 16:55:30
@EricLippert我會研究這一點。此外,我不認爲一個簡單的文件版本查詢造成任何主要的威脅 – Cesar 2012-03-04 18:07:42