Defines the identity permission for files originating in the global assembly cache. This class cannot be inherited.
Namespace:
System.Security.Permissions
Assembly:
mscorlib (in mscorlib.dll)
Visual Basic (Declaration)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class GacIdentityPermission _
Inherits CodeAccessPermission
Dim instance As GacIdentityPermission
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class GacIdentityPermission : CodeAccessPermission
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class GacIdentityPermission sealed : public CodeAccessPermission
public final class GacIdentityPermission extends CodeAccessPermission
Files are either in the global assembly cache, or they are not. There are no variations to the permission granted, so all GacIdentityPermission objects are equal.
Important Note: |
|---|
In the .NET Framework versions 1.0 and 1.1, demands on the identity permissions are effective even when the calling assembly is fully trusted. That is, although the calling assembly has full trust, a demand for an identity permission fails if the assembly does not meet the demanded criteria. In the .NET Framework version 2.0, demands for identity permissions are ineffective if the calling assembly has full trust. This assures consistency for all permissions, eliminating the treatment of identity permissions as a special case. |
The following code example shows the behavior of the GacIdentityPermission class methods.
Note: |
|---|
The code example is intended to show the behavior of the methods, not to demonstrate their use. In general, the methods of permission classes are used by the security infrastructure; they are not typically used in applications. Generally, only the constructors are used in application code. The created instance validates or controls resource access by using inherited CodeAccessPermission methods such as Demand. |
Imports System
Imports System.Security
Imports System.Security.Permissions
Imports Microsoft.VisualBasic
Public Class GacIdentityPermissionDemo
' IsSubsetOf determines whether the current permission is a subset of the specified permission.
Private Function IsSubsetOfDemo() As Boolean
Try
Dim Gac1 As New GacIdentityPermission
Dim Gac2 As New GacIdentityPermission(PermissionState.None)
If (Gac1.Equals(Gac2)) Then
Console.WriteLine("GacIdentityPermission() equals GacIdentityPermission(PermissionState.None).")
End If
If Gac1.IsSubsetOf(Gac2) Then
Console.WriteLine((Gac1.ToString() & " is a subset of " & Gac2.ToString()))
Else
Console.WriteLine((Gac1.ToString() & " is not a subset of " & Gac2.ToString()))
End If
Catch e As Exception
Console.WriteLine(("An exception was thrown : " & e.ToString().ToString()))
Return False
End Try
Return True
End Function 'IsSubsetOfDemo
' Union creates a new permission that is the union of the current permission
' and the specified permission.
Private Function UnionDemo() As Boolean
Dim Gac1 As New GacIdentityPermission(PermissionState.None)
Dim Gac2 As New GacIdentityPermission
Try
Dim p3 As GacIdentityPermission = CType(Gac1.Union(Gac2), GacIdentityPermission)
If Not (p3 Is Nothing) Then
Console.WriteLine("The union of two GacIdentityPermissions was successful.")
Else
Console.WriteLine("The union of two GacIdentityPermissions failed.")
Return False
End If
Catch e As Exception
Console.WriteLine(("An exception was thrown : " & e.ToString()))
Return False
End Try
Return True
End Function 'UnionDemo
' Intersect creates and returns a new permission that is the intersection of the
' current permission and the specified permission.
Private Function IntersectDemo() As Boolean
Dim Gac1 As New GacIdentityPermission
Dim Gac2 As New GacIdentityPermission
Try
Dim p3 As GacIdentityPermission = CType(Gac1.Intersect(Gac2), GacIdentityPermission)
If Not (p3 Is Nothing) Then
Console.WriteLine(("The intersection of the two permissions = " & p3.ToString() & ControlChars.Lf))
Else
Console.WriteLine("The intersection of the two permissions is null." & ControlChars.Lf)
End If
Catch e As Exception
Console.WriteLine(("An exception was thrown : " & e.ToString()))
Return False
End Try
Return True
End Function 'IntersectDemo
'Copy creates and returns an identical copy of the current permission.
Private Function CopyDemo() As Boolean
Dim Gac1 As New GacIdentityPermission
Dim Gac2 As New GacIdentityPermission
Console.WriteLine("**************************************************************************")
Try
Gac2 = CType(Gac1.Copy(), GacIdentityPermission)
If Not (Gac2 Is Nothing) Then
Console.WriteLine(("Result of copy = " & Gac2.ToString() & ControlChars.Lf))
End If
Catch e As Exception
Console.WriteLine(("Copy failed : " & Gac1.ToString() & e.ToString()))
Return False
End Try
Return True
End Function 'CopyDemo
' ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a
' permission with the specified state from the XML encoding.
Private Function ToFromXmlDemo() As Boolean
Dim Gac1 As New GacIdentityPermission
Dim Gac2 As New GacIdentityPermission
Console.WriteLine("**************************************************************************")
Try
Gac2 = New GacIdentityPermission(PermissionState.None)
Gac2.FromXml(Gac1.ToXml())
Dim result As Boolean = Gac2.Equals(Gac1)
If Gac2.IsSubsetOf(Gac1) AndAlso Gac1.IsSubsetOf(Gac2) Then
Console.WriteLine(("Result of ToFromXml = " & Gac2.ToString()))
Else
Console.WriteLine(Gac2.ToString())
Console.WriteLine(Gac1.ToString())
Return False
End If
Catch e As Exception
Console.WriteLine(("ToFromXml failed. " & e.ToString()))
Return False
End Try
Return True
End Function 'ToFromXmlDemo
' Invoke all demos.
Public Function RunDemo() As Boolean
Dim returnCode As Boolean = True
Dim tempReturnCode As Boolean
' Call the IsSubsetOf demo.
tempReturnCode = IsSubsetOfDemo()
If tempReturnCode Then
Console.Out.WriteLine("IsSubsetOf demo completed successfully.")
Else
Console.Out.WriteLine("Subset demo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
' Call the Union demo.
tempReturnCode = UnionDemo()
If tempReturnCode Then
Console.Out.WriteLine("Union demo completed successfully.")
Else
Console.Out.WriteLine("Union demo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
' Call the Intersect demo.
tempReturnCode = IntersectDemo()
If tempReturnCode Then
Console.Out.WriteLine("Intersect demo completed successfully.")
Else
Console.Out.WriteLine("Intersect demo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
' Call the Copy demo.
tempReturnCode = CopyDemo()
If tempReturnCode Then
Console.Out.WriteLine("Copy demo completed successfully.")
Else
Console.Out.WriteLine("Copy demo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
' Call the ToFromXML demo.
tempReturnCode = ToFromXmlDemo()
If tempReturnCode Then
Console.Out.WriteLine("ToFromXML demo completed successfully.")
Else
Console.Out.WriteLine("ToFromXml demo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
Return returnCode
End Function 'RunDemo
' Test harness.
Public Overloads Shared Sub Main(ByVal args() As [String])
Try
Dim testcase As New GACIdentityPermissionDemo
Dim returnCode As Boolean = testcase.RunDemo()
If returnCode Then
Console.Out.WriteLine("The GacIdentityPermission demo completed successfully.")
Console.Out.WriteLine("Press the Enter key to exit.")
Dim consoleInput As String = Console.ReadLine()
System.Environment.ExitCode = 100
Else
Console.Out.WriteLine("The GacIdentityPermission demo failed.")
Console.Out.WriteLine("Press the Enter key to exit.")
Dim consoleInput As String = Console.ReadLine()
System.Environment.ExitCode = 101
End If
Catch e As Exception
Console.Out.WriteLine("The GacIdentityPermission demo failed.")
Console.WriteLine(e.ToString())
Console.Out.WriteLine("Press the Enter key to exit.")
Dim consoleInput As String = Console.ReadLine()
System.Environment.ExitCode = 101
End Try
End Sub 'Main
End Class 'GacIdentityPermissionDemo
using System;
using System.Security;
using System.Security.Permissions;
public class GacIdentityPermissionDemo
{
// IsSubsetOf determines whether the current permission is a subset of the specified permission.
private bool IsSubsetOfDemo()
{
try
{
GacIdentityPermission Gac1 = new GacIdentityPermission();
GacIdentityPermission Gac2 = new GacIdentityPermission(PermissionState.None);
if (Gac1.Equals(Gac2))
Console.WriteLine("GacIdentityPermission() equals GacIdentityPermission(PermissionState.None).");
if (Gac1.IsSubsetOf(Gac2))
{
Console.WriteLine(Gac1 + " is a subset of " + Gac2);
}
else
{
Console.WriteLine(Gac1 + " is not a subset of " + Gac2);
}
}
catch (Exception e)
{
Console.WriteLine ("An exception was thrown : " + e);
return false;
}
return true;
}
// Union creates a new permission that is the union of the current permission
// and the specified permission.
private bool UnionDemo()
{
GacIdentityPermission Gac1 = new GacIdentityPermission(PermissionState.None);
GacIdentityPermission Gac2 = new GacIdentityPermission();
try
{
GacIdentityPermission p3 = (GacIdentityPermission)Gac1.Union(Gac2);
if (p3 != null)
{
Console.WriteLine("The union of two GacIdentityPermissions was successful.");
}
else
{
Console.WriteLine("The union of two GacIdentityPermissions failed.");
return false;
}
}
catch (Exception e)
{
Console.WriteLine("An exception was thrown : " + e);
return false;
}
return true;
}
// Intersect creates and returns a new permission that is the intersection of the
// current permission and the specified permission.
private bool IntersectDemo()
{
GacIdentityPermission Gac1 = new GacIdentityPermission();
GacIdentityPermission Gac2 = new GacIdentityPermission();
try
{
GacIdentityPermission p3 = (GacIdentityPermission)Gac1.Intersect(Gac2);
if (p3 != null)
{
Console.WriteLine("The intersection of the two permissions = " + p3.ToString() + "\n");
}
else
{
Console.WriteLine("The intersection of the two permissions is null.\n");
}
}
catch (Exception e)
{
Console.WriteLine("An exception was thrown : " + e);
return false;
}
return true;
}
//Copy creates and returns an identical copy of the current permission.
private bool CopyDemo()
{
GacIdentityPermission Gac1 = new GacIdentityPermission();
GacIdentityPermission Gac2 = new GacIdentityPermission();
Console.WriteLine("**************************************************************************");
try
{
Gac2 = (GacIdentityPermission)Gac1.Copy();
if (Gac2 != null)
{
Console.WriteLine("Result of copy = " + Gac2.ToString() + "\n");
}
}
catch (Exception e)
{
Console.WriteLine("Copy failed : " + Gac1.ToString() + e);
return false;
}
return true;
}
// ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a
// permission with the specified state from the XML encoding.
private bool ToFromXmlDemo()
{
GacIdentityPermission Gac1 = new GacIdentityPermission();
GacIdentityPermission Gac2 = new GacIdentityPermission();
Console.WriteLine("**************************************************************************");
try
{
Gac2 = new GacIdentityPermission(PermissionState.None);
Gac2.FromXml(Gac1.ToXml());
bool result = Gac2.Equals(Gac1);
if (Gac2.IsSubsetOf(Gac1) && Gac1.IsSubsetOf(Gac2))
{
Console.WriteLine("Result of ToFromXml = " + Gac2.ToString());
}
else
{
Console.WriteLine(Gac2.ToString());
Console.WriteLine(Gac1.ToString());
return false;
}
}
catch (Exception e)
{
Console.WriteLine("ToFromXml failed. " + e);
return false;
}
return true;
}
// Invoke all demos.
public bool RunDemo()
{
bool returnCode =true;
bool tempReturnCode;
// Call the IsSubsetOf demo.
if (tempReturnCode = IsSubsetOfDemo())Console.Out.WriteLine("IsSubsetOf demo completed successfully.");
else Console.Out.WriteLine("Subset demo failed.");
returnCode = tempReturnCode && returnCode;
// Call the Union demo.
if (tempReturnCode = UnionDemo())Console.Out.WriteLine("Union demo completed successfully.");
else Console.Out.WriteLine("Union demo failed.");
returnCode = tempReturnCode && returnCode;
// Call the Intersect demo.
if (tempReturnCode = IntersectDemo())Console.Out.WriteLine("Intersect demo completed successfully.");
else Console.Out.WriteLine("Intersect demo failed.");
returnCode = tempReturnCode && returnCode;
// Call the Copy demo.
if (tempReturnCode = CopyDemo())Console.Out.WriteLine("Copy demo completed successfully.");
else Console.Out.WriteLine("Copy demo failed.");
returnCode = tempReturnCode && returnCode;
// Call the ToFromXML demo.
if (tempReturnCode = ToFromXmlDemo())Console.Out.WriteLine("ToFromXML demo completed successfully.");
else Console.Out.WriteLine("ToFromXml demo failed.");
returnCode = tempReturnCode && returnCode;
return (returnCode);
}
// Test harness.
public static void Main(String[] args)
{
try
{
GacIdentityPermissionDemo testcase = new GacIdentityPermissionDemo();
bool returnCode = testcase.RunDemo();
if (returnCode)
{
Console.Out.WriteLine("The GacIdentityPermission demo completed successfully.");
Console.Out.WriteLine("Press the Enter key to exit.");
string consoleInput = Console.ReadLine();
System.Environment.ExitCode = 100;
}
else
{
Console.Out.WriteLine("The GacIdentityPermission demo failed.");
Console.Out.WriteLine("Press the Enter key to exit.");
string consoleInput = Console.ReadLine();
System.Environment.ExitCode = 101;
}
}
catch (Exception e)
{
Console.Out.WriteLine("The GacIdentityPermission demo failed.");
Console.WriteLine(e.ToString());
Console.Out.WriteLine("Press the Enter key to exit.");
string consoleInput = Console.ReadLine();
System.Environment.ExitCode = 101;
}
}
}
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
public ref class GacIdentityPermissionDemo
{
private:
// IsSubsetOf determines whether the current permission is a subset of the specified permission.
bool IsSubsetOfDemo()
{
try
{
GacIdentityPermission ^ Gac1 = gcnew GacIdentityPermission;
GacIdentityPermission ^ Gac2 = gcnew GacIdentityPermission( PermissionState::None );
if ( Gac1->Equals( Gac2 ) )
Console::WriteLine( "GacIdentityPermission() equals GacIdentityPermission(PermissionState.None)." );
if ( Gac1->IsSubsetOf( Gac2 ) )
{
Console::WriteLine( "{0} is a subset of {1}", Gac1, Gac2 );
}
else
{
Console::WriteLine( "{0} is not a subset of {1}", Gac1, Gac2 );
}
}
catch ( Exception^ e )
{
Console::WriteLine( "An exception was thrown : {0}", e );
return false;
}
return true;
}
// Union creates a new permission that is the union of the current permission
// and the specified permission.
bool UnionDemo()
{
GacIdentityPermission ^ Gac1 = gcnew GacIdentityPermission( PermissionState::None );
GacIdentityPermission ^ Gac2 = gcnew GacIdentityPermission;
try
{
GacIdentityPermission ^ p3 = dynamic_cast<GacIdentityPermission^>(Gac1->Union( Gac2 ));
if ( p3 != nullptr )
{
Console::WriteLine( "The union of two GacIdentityPermissions was successful." );
}
else
{
Console::WriteLine( "The union of two GacIdentityPermissions failed." );
return false;
}
}
catch ( Exception^ e )
{
Console::WriteLine( "An exception was thrown : {0}", e );
return false;
}
return true;
}
// Intersect creates and returns a new permission that is the intersection of the
// current permission and the specified permission.
bool IntersectDemo()
{
GacIdentityPermission ^ Gac1 = gcnew GacIdentityPermission;
GacIdentityPermission ^ Gac2 = gcnew GacIdentityPermission;
try
{
GacIdentityPermission ^ p3 = dynamic_cast<GacIdentityPermission^>(Gac1->Intersect( Gac2 ));
if ( p3 != nullptr )
{
Console::WriteLine( "The intersection of the two permissions = {0}\n", p3 );
}
else
{
Console::WriteLine( "The intersection of the two permissions is null.\n" );
}
}
catch ( Exception^ e )
{
Console::WriteLine( "An exception was thrown : {0}", e );
return false;
}
return true;
}
//Copy creates and returns an identical copy of the current permission.
bool CopyDemo()
{
GacIdentityPermission ^ Gac1 = gcnew GacIdentityPermission;
GacIdentityPermission ^ Gac2 = gcnew GacIdentityPermission;
Console::WriteLine( "**************************************************************************" );
try
{
Gac2 = dynamic_cast<GacIdentityPermission^>(Gac1->Copy());
if ( Gac2 != nullptr )
{
Console::WriteLine( "Result of copy = {0}\n", Gac2 );
}
}
catch ( Exception^ e )
{
Console::WriteLine( "Copy failed : {0}{1}", Gac1, e );
return false;
}
return true;
}
// ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a
// permission with the specified state from the XML encoding.
bool ToFromXmlDemo()
{
GacIdentityPermission ^ Gac1 = gcnew GacIdentityPermission;
GacIdentityPermission ^ Gac2 = gcnew GacIdentityPermission;
Console::WriteLine( "**************************************************************************" );
try
{
Gac2 = gcnew GacIdentityPermission( PermissionState::None );
Gac2->FromXml( Gac1->ToXml() );
bool result = Gac2->Equals( Gac1 );
if ( Gac2->IsSubsetOf( Gac1 ) && Gac1->IsSubsetOf( Gac2 ) )
{
Console::WriteLine( "Result of ToFromXml = {0}", Gac2 );
}
else
{
Console::WriteLine( Gac2 );
Console::WriteLine( Gac1 );
return false;
}
}
catch ( Exception^ e )
{
Console::WriteLine( "ToFromXml failed. {0}", e );
return false;
}
return true;
}
public:
// Invoke all demos.
bool RunDemo()
{
bool returnCode = true;
bool tempReturnCode;
// Call the IsSubsetOf demo.
if ( tempReturnCode = IsSubsetOfDemo() )
Console::WriteLine( "IsSubsetOf demo completed successfully." );
else
Console::WriteLine( "Subset demo failed." );
returnCode = tempReturnCode && returnCode;
// Call the Union demo.
if ( tempReturnCode = UnionDemo() )
Console::WriteLine( "Union demo completed successfully." );
else
Console::WriteLine( "Union demo failed." );
returnCode = tempReturnCode && returnCode;
// Call the Intersect demo.
if ( tempReturnCode = IntersectDemo() )
Console::WriteLine( "Intersect demo completed successfully." );
else
Console::WriteLine( "Intersect demo failed." );
returnCode = tempReturnCode && returnCode;
// Call the Copy demo.
if ( tempReturnCode = CopyDemo() )
Console::WriteLine( "Copy demo completed successfully." );
else
Console::WriteLine( "Copy demo failed." );
returnCode = tempReturnCode && returnCode;
// Call the ToFromXML demo.
if ( tempReturnCode = ToFromXmlDemo() )
Console::WriteLine( "ToFromXML demo completed successfully." );
else
Console::WriteLine( "ToFromXml demo failed." );
returnCode = tempReturnCode && returnCode;
return (returnCode);
}
};
// Test harness.
int main()
{
try
{
GacIdentityPermissionDemo^ testcase = gcnew GacIdentityPermissionDemo;
bool returnCode = testcase->RunDemo();
if ( returnCode )
{
Console::WriteLine( "The GacIdentityPermission demo completed successfully." );
Console::WriteLine( "Press the Enter key to exit." );
Console::ReadLine();
System::Environment::ExitCode = 100;
}
else
{
Console::WriteLine( "The GacIdentityPermission demo failed." );
Console::WriteLine( "Press the Enter key to exit." );
Console::ReadLine();
System::Environment::ExitCode = 101;
}
}
catch ( Exception^ e )
{
Console::WriteLine( "The GacIdentityPermission demo failed." );
Console::WriteLine( e );
Console::WriteLine( "Press the Enter key to exit." );
Console::ReadLine();
System::Environment::ExitCode = 101;
}
}
System..::.Object
System.Security..::.CodeAccessPermission
System.Security.Permissions..::.GacIdentityPermission
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
.NET Framework
Supported in: 3.5, 3.0, 2.0
Reference