在运行时请求程序集的 CAS 安全设置 - C# .NET 2.0
Requesting the CAS Security Settings for an assembly at runtime - C# .NET 2.0
如何使用 C# .NET 2.0 (VS 2005) 在 运行 时检查加载程序集的安全设置?我正在加载程序集:
程序集外部程序集 = Assembly.LoadFrom(路径);
可能是本地路径或远程 UNC 路径(网络路径)。
如果是远程网络路径,用户应将CAS设置为"fulltrust"和caspol.exe,正确设置为运行应用程序。如果 CAS 配置正确,我如何在 运行 时检查它?
我看到,.NET 4.0 提供了一个 "IsFullyTrusted" 属性 用于此目的。
不幸的是,我的项目仍然必须使用 VS 2005。
问候
汤姆
试试这个:
public static bool IsFullyTrusted()
{
try
{
new PermissionSet(PermissionState.Unrestricted).Demand();
return true;
}
catch (SecurityException)
{
return false;
}
}
在我做了一些功课并深入研究了代码访问安全之后,我希望到目前为止我已经找到了适合我的解决方案。我只需要两行代码:
Assembly externalAssembly = Assembly.LoadFrom(path);
// Retrieve the permission set of the external assembly
PermissionSet permSet = SecurityManager.ResolvePolicy(externalAssembly.Evidence);
if(!permSet.IsUnrestricted())
{
throw new Exception("Assembly is not fully trusted!");
}
如果程序集具有不受限制的权限,则 IsUnrestricted() returns 为真,并且 permSet 中的权限集合为空。
如果受到限制,则返回 false,并且 permSet 列出由 .NET 策略解析分配给程序集的权限。
希望这对以后的人有所帮助
汤姆
如何使用 C# .NET 2.0 (VS 2005) 在 运行 时检查加载程序集的安全设置?我正在加载程序集:
程序集外部程序集 = Assembly.LoadFrom(路径);
可能是本地路径或远程 UNC 路径(网络路径)。
如果是远程网络路径,用户应将CAS设置为"fulltrust"和caspol.exe,正确设置为运行应用程序。如果 CAS 配置正确,我如何在 运行 时检查它?
我看到,.NET 4.0 提供了一个 "IsFullyTrusted" 属性 用于此目的。
不幸的是,我的项目仍然必须使用 VS 2005。
问候 汤姆
试试这个:
public static bool IsFullyTrusted()
{
try
{
new PermissionSet(PermissionState.Unrestricted).Demand();
return true;
}
catch (SecurityException)
{
return false;
}
}
在我做了一些功课并深入研究了代码访问安全之后,我希望到目前为止我已经找到了适合我的解决方案。我只需要两行代码:
Assembly externalAssembly = Assembly.LoadFrom(path);
// Retrieve the permission set of the external assembly
PermissionSet permSet = SecurityManager.ResolvePolicy(externalAssembly.Evidence);
if(!permSet.IsUnrestricted())
{
throw new Exception("Assembly is not fully trusted!");
}
如果程序集具有不受限制的权限,则 IsUnrestricted() returns 为真,并且 permSet 中的权限集合为空。
如果受到限制,则返回 false,并且 permSet 列出由 .NET 策略解析分配给程序集的权限。
希望这对以后的人有所帮助
汤姆