StrongNameIdentityPermission-Klasse
Definiert die Identitätsberechtigung für starke Namen. Diese Klasse kann nicht vererbt werden.
Namespace: System.Security.Permissions
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class StrongNameIdentityPermission
Inherits CodeAccessPermission
'Usage
Dim instance As StrongNameIdentityPermission
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StrongNameIdentityPermission : CodeAccessPermission
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class StrongNameIdentityPermission sealed : public CodeAccessPermission
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public final class StrongNameIdentityPermission extends CodeAccessPermission
SerializableAttribute
ComVisibleAttribute(true)
public final class StrongNameIdentityPermission extends CodeAccessPermission
Hinweise
Mit StrongNameIdentityPermission können Sie Versions- und Namensschutz herstellen, indem Sie das Vorhandensein von Aufrufcode in einer bestimmten Codeassembly mit starkem Namen bestätigen.
Die Identität eines starken Namens beruht auf einem kryptografischen öffentlichen Schlüssel, der als BLOB bezeichnet wird und mit dem Namen und der Version einer bestimmten Assembly kombiniert werden kann. Der Schlüssel definiert einen eindeutigen Namespace. Er ermöglicht eine strenge Überprüfung der Echtheit des Namens, da die Definition des Namens in einer Assembly mit dem entsprechenden privaten Schlüssel signiert sein muss.
Die Gültigkeit des Schlüssels mit starkem Namen hängt nicht von einer Vertrauensstellung oder einem Zertifikat ab, das für den Schlüssel ausgestellt werden muss.
Hinweis
Vollständige Forderungen nach StrongNameIdentityPermission sind nur dann erfolgreich, wenn alle Assemblys im Stapel die richtigen Beweise für die Erfüllung der Forderung haben. Verknüpfungsaufrufe mit StrongNameIdentityPermissionAttribute sind erfolgreich, wenn nur der unmittelbare Aufrufer die richtigen Beweise hat.
Eine ausführliche Beschreibung starker Namen finden Sie unter StrongName. Weitere Informationen über Assemblys mit starkem Namen finden Sie unter Assemblys mit starkem Namen.
Die StrongNameIdentityPermission-Klasse kann verwendet werden, um Anforderungen mit starkem Namen für den Zugriff auf die öffentlichen Member eines Typs zu definieren. Das StrongNameIdentityPermissionAttribute-Attribut kann verwendet werden, um Anforderungen mit starkem Namen auf Assemblyebene zu definieren. In .NET Framework, Version 2,0, können Sie auch mit InternalsVisibleToAttribute angeben, dass alle nicht öffentlichen Typen in dieser Assembly für eine andere Assembly sichtbar sind. Weitere Informationen finden Sie unter Friend-Assemblys (C#-Programmierhandbuch).
Beispiel
Im folgenden Codebeispiel wird die Verwendung der StrongNameIdentityPermission-Klasse veranschaulicht. Das Beispiel hat das Format einer Klassenbibliothek, das sowohl StrongNameIdentityPermissionAttribute-Attribute als auch StrongNameIdentityPermission anwendet, um zu fordern, dass der Aufrufer mit einem bestimmten starken Namen signiert wird.
' The following commented code should be compiled as a console application to execute the
' class library example.
'
'Imports System
'Imports System.Reflection
'Imports StrongNamedLibVb
'<Assembly: AssemblyVersion("1.0.0.0")>
'<Assembly: AssemblyKeyFile("snKey.snk")>
'Public Class StrongNameTest
' ' Demonstrate the declarative and imperative forms of the StrongNameIdentityPermission.
' Public Shared Sub Main()
' Try
' Dim signed As New Signed
' signed.GetWindirImperative()
' signed.GetWindirDeclarative()
' Console.WriteLine("Called the signed library successfully.")
' Catch e As Exception
' Console.WriteLine(("Exception thrown in called assembly: " + e.Message))
' End Try
' End Sub 'Main
'End Class 'StrongNameTest
Imports System
Imports System.Security.Permissions
Imports System.Reflection
Imports Microsoft.VisualBasic
<assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyKeyFile("snKey.snk")>
' Demand that the calling assembly has a specific strong name key.
' Use Sn.exe to generate the public key string used for the demand.
<StrongNameIdentityPermissionAttribute(SecurityAction.Demand, PublicKey:= _
"0024000004800000940000000602000000240000525341310004000001000100ed92913322617b" + _
"c45aae29aaaddd29c1af270797b200e698da08ceceaa546f911ad09ef0f6dbe4221fa30b8210c7" + _
"6fe004702e540068e526273f35bd009d2026226d00ab72f4223b09e896c0f7af688fab2adb4242" + _
"c2bfda793b5c2a259e0d6cd2bd09cbcc20305bd465c113e36b19854602dc53ce4766f568fc576d" + _
"be3822b4")> _
Public Class Signed
' Read the environment windir variable.
Public Sub GetWindirImperative()
Try
' Use Sn.exe to generate the byte array for the public key.
Dim b1 As Byte() = {0, 36, 0, 0, 4, 128, 0, 0, 148, 0, 0, 0, 6, 2, 0, 0, 0, _
36, 0, 0, 82, 83, 65, 49, 0, 4, 0, 0, 1, 0, 1, 0, 237, 146, 145, 51, 34, _
97, 123, 196, 90, 174, 41, 170, 173, 221, 41, 193, 175, 39, 7, 151, 178, 0, _
230, 152, 218, 8, 206, 206, 170, 84, 111, 145, 26, 208, 158, 240, 246, 219, _
228, 34, 31, 163, 11, 130, 16, 199, 111, 224, 4, 112, 46, 84, 0, 104, 229, _
38, 39, 63, 53, 189, 0, 157, 32, 38, 34, 109, 0, 171, 114, 244, 34, 59, 9, _
232, 150, 192, 247, 175, 104, 143, 171, 42, 219, 66, 66, 194, 191, 218, 121, _
59, 92, 42, 37, 158, 13, 108, 210, 189, 9, 203, 204, 32, 48, 91, 212, 101, _
193, 19, 227, 107, 25, 133, 70, 2, 220, 83, 206, 71, 102, 245, 104, 252, _
87, 109, 190, 56, 34, 180}
' Specify the version of the calling assembly.
Dim v1 As New Version("1.0.0.0")
Dim blob As New StrongNamePublicKeyBlob(b1)
If (ComparePublicKeys()) Then
Console.WriteLine("Calling assembly has same key as this assembly.")
Else
Console.WriteLine("Calling assembly has different key than this assembly.")
End If
' Create different permissions to exercise the set operations.
Dim snPerm As New StrongNameIdentityPermission(blob, "StrongNamedExeVb", v1)
snPerm.Demand()
' Return the location of the Windows directory that is found in
' the windir environment variable.
Console.WriteLine(Environment.GetEnvironmentVariable("windir"))
Catch e As Exception
Console.WriteLine(("Exception thrown in called assembly: " + e.Message))
End Try
End Sub 'GetWindir
Public Sub GetWindirDeclarative()
Try
' Return the location of the Windows directory that is found in
' the windir environment variable.
Console.WriteLine(Environment.GetEnvironmentVariable("windir"))
Catch e As Exception
Console.WriteLine(("Exception thrown in called assembly: " + e.Message))
End Try
End Sub 'GetWindir
Public Shared Function ComparePublicKeys() As Boolean
Try
Dim callingAssembly As [Assembly]
' Create a target object.
Dim Integer1 As New Int32
Dim Type1 As Type
' Set the Type instance to the target class type.
Type1 = Integer1.GetType()
' Create an instance of the assembly class to house the Integer type.
callingAssembly = [Assembly].GetAssembly(Integer1.GetType())
' Display the name of the calling assembly.
Dim entryAssembly As [Assembly] = [Assembly].GetEntryAssembly()
Dim mainAssembly As String = entryAssembly.FullName
Console.WriteLine(("Calling assembly = " + entryAssembly.FullName))
' Get the name of the assembly being called (this assembly).
Dim thisAssembly As String = [Assembly].GetCallingAssembly().FullName
Console.WriteLine(("Called assembly=" + thisAssembly))
Dim tokenIndex1 As Integer = thisAssembly.LastIndexOf("PublicKeyToken")
Dim tokenIndex2 As Integer = mainAssembly.LastIndexOf("PublicKeyToken")
Dim testString1 As String = thisAssembly.Substring(tokenIndex1, 31)
Dim testString2 As String = mainAssembly.Substring(tokenIndex2, 31)
Return testString1.Equals(testString2)
Catch
Console.WriteLine("This is an unexpected exception")
Throw
End Try
End Function 'ComparePublicKeys
End Class 'Signed
//The following commented code should be compiled as an console application to execute the
// class library example.
//
//using System;
//using System.Reflection;
//using SignedLib;
//[assembly: AssemblyVersion("1.0.0.0")]
//[assembly: AssemblyKeyFile("snKey.snk")]
//public class StrongNameTest
//{
// // Demonstrate the declarative and imperative forms of the StrongNameIdentityPermission.
// public static void Main()
// {
// try
// {
// Signed signedLib = new Signed();
// signedLib.GetWindirImperative();
// signedLib.GetWindirDeclarative();
// Console.WriteLine( "Called the signed library assembly methods successfully.");
// }
// catch (Exception e)
// {
// Console.WriteLine( "Exception thrown in called assembly: " + e.Message);
// }
// }
//}
//
// Class library example to demonstrate StrongNameIdentityPermission and
// StrongNameIdentityPermissionAttribute.
using System;
using System.Security.Permissions;
using System.Reflection;
[assembly: AssemblyVersion("1.0.*")]
[assembly :AssemblyKeyFile("snKey.snk")]
namespace SignedLib
{
public class Signed
{
// Read the windir environment variable.
public void GetWindirImperative()
{
try
{
// Use Sn.exe to generate the byte array for the public key.
byte[] b1 = { 0, 36, 0, 0, 4, 128, 0, 0, 148, 0, 0, 0, 6, 2, 0, 0, 0, 36,
0, 0, 82, 83, 65, 49, 0, 4, 0, 0, 1, 0, 1, 0, 237, 146, 145, 51, 34,
97, 123, 196, 90, 174, 41, 170, 173, 221, 41, 193, 175, 39, 7, 151,
178, 0, 230, 152, 218, 8, 206, 206, 170, 84, 111, 145, 26, 208, 158,
240, 246, 219, 228, 34, 31, 163, 11, 130, 16, 199, 111, 224, 4, 112,
46, 84, 0, 104, 229, 38, 39, 63, 53, 189, 0, 157, 32, 38, 34, 109, 0,
171, 114, 244, 34, 59, 9, 232, 150, 192, 247, 175, 104, 143, 171, 42,
219, 66, 66, 194, 191, 218, 121, 59, 92, 42, 37, 158, 13, 108, 210,
189, 9, 203, 204, 32, 48, 91, 212, 101, 193, 19, 227, 107, 25, 133,
70, 2, 220, 83, 206, 71, 102, 245, 104, 252, 87, 109, 190, 56, 34, 180 };
// Specify the version of the calling assembly.
Version v1 = new Version("1.0.0.0");
StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob(b1);
Console.WriteLine(ComparePublicKeys() ? "Calling assembly has same key as this assembly " : "Calling assembly has different key than this assembly");
// Create different permissions to exercise the set operations.
StrongNameIdentityPermission snPerm = new StrongNameIdentityPermission(blob, "StrongNamedExe", v1);
snPerm.Demand();
// Return the location of the Windows directory that is found in
// the windir environment variable.
Console.WriteLine(Environment.GetEnvironmentVariable("windir"));
}
catch (Exception e)
{
Console.WriteLine("Exception thrown in called assembly: " + e.Message);
}
}
// Use an attribute to demand that the calling assembly has a specific strong name key.
// Use Sn.exe to generate the public key string used for the demand.
[StrongNameIdentityPermissionAttribute(SecurityAction.Demand, PublicKey =
"0024000004800000940000000602000000240000525341310004000001000100ed92913322617b" +
"c45aae29aaaddd29c1af270797b200e698da08ceceaa546f911ad09ef0f6dbe4221fa30b8210c7" +
"6fe004702e540068e526273f35bd009d2026226d00ab72f4223b09e896c0f7af688fab2adb4242" +
"c2bfda793b5c2a259e0d6cd2bd09cbcc20305bd465c113e36b19854602dc53ce4766f568fc576d" +
"be3822b4")]
public void GetWindirDeclarative()
{
try
{
// Return the location of the Windows directory that is found in
// the windir environment variable.
Console.WriteLine(Environment.GetEnvironmentVariable("windir"));
}
catch (Exception e)
{
Console.WriteLine("Exception thrown in called assembly: " + e.Message);
}
}
public static bool ComparePublicKeys()
{
try
{
Assembly callingAssembly;
// Create a target object.
Int32 integer1 = new Int32();
Type type1;
// Set the Type instance to the target class type.
type1 = integer1.GetType();
// Create an instance of the assembly class to house the Integer type.
callingAssembly = Assembly.GetAssembly(integer1.GetType());
// Display the name of the calling assembly.
Assembly entryAssembly = Assembly.GetEntryAssembly();
string mainAssembly = entryAssembly.FullName;
Console.WriteLine("Calling assembly = " + entryAssembly.FullName);
// Get the name of the assembly being called (this assembly).
string thisAssembly = Assembly.GetCallingAssembly().FullName;
Console.WriteLine("Called assembly=" + thisAssembly);
int tokenIndex1 = thisAssembly.LastIndexOf("PublicKeyToken");
int tokenIndex2 = mainAssembly.LastIndexOf("PublicKeyToken");
string testString1 = thisAssembly.Substring(tokenIndex1, 31);
string testString2 = mainAssembly.Substring(tokenIndex2, 31);
return testString1.Equals(testString2);
}
catch
{
Console.WriteLine("This is an unexpected exception");
throw;
}
}
}
}
//The following commented code should be compiled as an console application to execute the
// class library example.
//
//#using <mscorlib.dll>
//using namespace System;
//using namespace System::Reflection;
//using namespace SignedLib;
//[assembly: AssemblyVersion(S"1.0.0.0")]
//[assembly: AssemblyKeyFile(S"snKey.snk")];
// // Demonstrate the declarative and imperative forms of the StrongNameIdentityPermission.
//int main()
//{
// try
// {
// Signed* signedLib = new Signed();
// signedLib->GetWindirImperative();
// signedLib->GetWindirDeclarative();
// Console::WriteLine( S"Called the signed library assembly methods successfully.");
// }
// catch (Exception* e)
// {
// Console::WriteLine( S"Exception thrown in called assembly: {0}", e->Message);
// }
//}
//
// Class library example to demonstrate StrongNameIdentityPermission and
// StrongNameIdentityPermissionAttribute.
using namespace System;
using namespace System::Security::Permissions;
using namespace System::Reflection;
[assembly:AssemblyVersion("1.0.*")];
[assembly:AssemblyKeyFile("snKey.snk")];
namespace SignedLib
{
public ref class Signed
{
public:
// Read the windir environment variable.
void GetWindirImperative()
{
try
{
// Use Sn.exe to generate the byte array for the public key.
array<Byte>^b1 = {0,36,0,0,4,128,0,0,148,0,0,0,6,2,0,0,0,36,0,0,82,83,65,49,0,4,0,0,1,0,1,0,237,146,145,51,34,97,123,196,90,174,41,170,173,221,41,193,175,39,7,151,178,0,230,152,218,8,206,206,170,84,111,145,26,208,158,240,246,219,228,34,31,163,11,130,16,199,111,224,4,112,46,84,0,104,229,38,39,63,53,189,0,157,32,38,34,109,0,171,114,244,34,59,9,232,150,192,247,175,104,143,171,42,219,66,66,194,191,218,121,59,92,42,37,158,13,108,210,189,9,203,204,32,48,91,212,101,193,19,227,107,25,133,70,2,220,83,206,71,102,245,104,252,87,109,190,56,34,180};
// Specify the version of the calling assembly.
Version^ v1 = gcnew Version( "1.0.0.0" );
StrongNamePublicKeyBlob^ blob = gcnew StrongNamePublicKeyBlob( b1 );
Console::WriteLine( ComparePublicKeys() ? "Calling assembly has same key as this assembly " : "Calling assembly has different key than this assembly" );
// Create different permissions to exercise the set operations.
StrongNameIdentityPermission^ snPerm = gcnew StrongNameIdentityPermission( blob,"StrongNamedExe",v1 );
snPerm->Demand();
// Return the location of the Windows directory that is found in
// the windir environment variable.
Console::WriteLine( Environment::GetEnvironmentVariable( "windir" ) );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception thrown in called assembly: {0}", e->Message );
}
}
// Use an attribute to demand that the calling assembly has a specific strong name key.
// Use Sn.exe to generate the public key string used for the demand.
[StrongNameIdentityPermissionAttribute(SecurityAction::Demand,PublicKey=
"0024000004800000940000000602000000240000525341310004000001000100ed92913322617b"
"c45aae29aaaddd29c1af270797b200e698da08ceceaa546f911ad09ef0f6dbe4221fa30b8210c7"
"activatede004702e540068e526273f35bd009d2026226d00ab72f4223b09e896c0f7af688fab2adb4242"
"c2bfda793b5c2a259e0d6cd2bd09cbcc20305bd465c113e36b19854602dc53ce4766f568fc576d"
"be3822b4")]
void GetWindirDeclarative()
{
try
{
// Return the location of the Windows directory that is found in
// the windir environment variable.
Console::WriteLine( Environment::GetEnvironmentVariable( "windir" ) );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception thrown in called assembly: {0}", e->Message );
}
}
static bool ComparePublicKeys()
{
try
{
Assembly^ callingAssembly;
// Create a target object.
Int32 integer1 = Int32( );
Type^ type1;
// Set the Type instance to the target class type.
type1 = integer1.GetType();
// Create an instance of the assembly class to house the Integer type.
callingAssembly = Assembly::GetAssembly( integer1.GetType() );
// Display the name of the calling assembly.
Assembly^ entryAssembly = Assembly::GetEntryAssembly();
String^ mainAssembly = entryAssembly->FullName;
Console::WriteLine( "Calling assembly = {0}", entryAssembly->FullName );
// Get the name of the assembly being called (this assembly).
String^ thisAssembly = Assembly::GetCallingAssembly()->FullName;
Console::WriteLine( "Called assembly={0}", thisAssembly );
int tokenIndex1 = thisAssembly->LastIndexOf( "PublicKeyToken" );
int tokenIndex2 = mainAssembly->LastIndexOf( "PublicKeyToken" );
String^ testString1 = thisAssembly->Substring( tokenIndex1, 31 );
String^ testString2 = mainAssembly->Substring( tokenIndex2, 31 );
return testString1->Equals( testString2 );
}
catch ( Exception^ )
{
Console::WriteLine( "This is an unexpected exception" );
throw;
}
}
};
}
package SignedLib ;
// The following commented code should be compiled as an console application
// to execute the class library example.
// import System .* ;
// import System.Reflection .* ;
// import SignedLib .* ;
// /** @assembly AssemblyVersion("1.0.0.0")
// */
// /** @assembly AssemblyKeyFile("snKey.snk")
// */
// public class StrongNameTest
// {
// //Demonstrate the declarative and imperative forms of the
// // StrongNameIdentityPermission.
// public static void main(String[] args)
// {
// try {
// Signed signedLib = new Signed();
// signedLib.GetWindirImperative();
// signedLib.GetWindirDeclarative();
// Console.WriteLine(("Called the signed library assembly "
// + "methods successfully."));
// }
// catch(System.Exception e) {
// Console.WriteLine(("Exception thrown in called assembly: "
// + e.get_Message()));
// }
// } //main
// } //StrongNameTest
// Class library example to demonstrate StrongNameIdentityPermission and
// StrongNameIdentityPermissionAttribute.
import System.*;
import System.Security.Permissions.*;
import System.Reflection.*;
/** @assembly AssemblyVersion("1.0.*")
*/
/** @assembly AssemblyKeyFile("snKey.snk")
*/
public class Signed
{
// Read the windir environment variable.
public void GetWindirImperative()
{
try {
// Use Sn.exe to generate the byte array for the public key.
ubyte b1[] = { 0, 36, 0, 0, 4, 128, 0, 0, 148, 0, 0, 0, 6, 2,
0, 0, 0, 36, 0, 0, 82, 83, 65, 49, 0, 4, 0, 0, 1, 0, 1, 0,
237, 146, 145, 51, 34, 97, 123, 196, 90, 174, 41, 170, 173,
221, 41, 193, 175, 39, 7, 151, 178, 0, 230, 152, 218, 8,
206, 206, 170, 84, 111, 145, 26, 208, 158, 240, 246, 219,
228, 34, 31, 163, 11, 130, 16, 199, 111, 224, 4, 112, 46,
84, 0, 104, 229, 38, 39, 63, 53, 189, 0, 157, 32, 38, 34,
109, 0, 171, 114, 244, 34, 59, 9, 232, 150, 192, 247, 175,
104, 143, 171, 42, 219, 66, 66, 194, 191, 218, 121, 59, 92,
42, 37, 158, 13, 108, 210, 189, 9, 203, 204, 32, 48, 91,
212, 101, 193, 19, 227, 107, 25, 133, 70, 2, 220, 83, 206,
71, 102, 245, 104, 252, 87, 109, 190, 56, 34, 180};
// Specify the version of the calling assembly.
Version v1 = new Version("1.0.0.0");
StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob(b1);
Console.WriteLine((ComparePublicKeys()) ? "Calling assembly "
+ "has same key as this assembly " : "Calling assembly has "
+ "different key than this assembly");
// Create different permissions to exercise the set operations.
StrongNameIdentityPermission snPerm =
new StrongNameIdentityPermission(blob, "StrongNamedExe", v1);
snPerm.Demand();
// Return the location of the Windows directory that is found in
// the windir environment variable.
Console.WriteLine(Environment.GetEnvironmentVariable("windir"));
}
catch (System.Exception e) {
Console.WriteLine(("Exception thrown in called assembly: "
+ e.get_Message()));
}
} //GetWindirImperative
// Use an attribute to demand that the calling assembly has a
// specific strong name key.
// Use Sn.exe to generate the public key string used for the demand.
/** @attribute StrongNameIdentityPermissionAttribute(
SecurityAction.Demand, PublicKey =
"0024000004800000940000000602000000240000525341310004000001000100ed" +
"92913322617b" + "c45aae29aaaddd29c1af270797b200e698da08ceceaa546f" +
"911ad09ef0f6dbe4221fa30b8210c7" + "6fe004702e540068e526273f35bd009d" +
"2026226d00ab72f4223b09e896c0f7af688fab2adb4242" + "c2bfda793b5c2a259" +
"e0d6cd2bd09cbcc20305bd465c113e36b19854602dc53ce4766f568fc576d" +
"be3822b4")
*/
public void GetWindirDeclarative()
{
try {
// Return the location of the Windows directory that is found in
// the windir environment variable.
Console.WriteLine(Environment.GetEnvironmentVariable("windir"));
}
catch (System.Exception e) {
Console.WriteLine(("Exception thrown in called assembly: "
+ e.get_Message()));
}
} //GetWindirDeclarative
public static boolean ComparePublicKeys() throws Exception
{
try {
Assembly callingAssembly;
// Create a target object.
Int32 integer1 = new Int32();
Type type1;
// Set the Type instance to the target class type.
type1 = integer1.GetType();
// Create an instance of the assembly class to house the Integer
// type.
callingAssembly = Assembly.GetAssembly(integer1.GetType());
// Display the name of the calling assembly.
Assembly entryAssembly = Assembly.GetEntryAssembly();
String mainAssembly = entryAssembly.get_FullName();
Console.WriteLine(("Calling assembly = "
+ entryAssembly.get_FullName()));
// Get the name of the assembly being called (this assembly).
String thisAssembly = Assembly.GetCallingAssembly().
get_FullName();
Console.WriteLine(("Called assembly=" + thisAssembly));
int tokenIndex1 = thisAssembly.LastIndexOf("PublicKeyToken");
int tokenIndex2 = mainAssembly.LastIndexOf("PublicKeyToken");
String testString1 = thisAssembly.Substring(tokenIndex1, 31);
String testString2 = mainAssembly.Substring(tokenIndex2, 31);
return testString1.Equals(testString2);
}
catch (System.Exception exp) {
Console.WriteLine("This is an unexpected exception");
throw new Exception();
}
} //ComparePublicKeys
} //Signed
Im folgenden Codebeispiel wird das Verhalten der StrongNameIdentityPermission-Methoden veranschaulicht. Der Zweck dieses Beispiels besteht darin, die Ergebnisse der Methoden zu veranschaulichen, nicht deren Verwendung.
Imports System
Imports System.Security
Imports System.Security.Permissions
Public Class StrongNameIdentityDemo
' Public key
Private Shared b1 As Byte() = {0, 36, 0, 0, 4, 128, 0, 0, 148, 0, 0, 0, 6, 2, 0, 0, 0, 36, 0, 0, 82, 83, 65, 49, 0, 4, 0, 0, 1, 0, 1, 0, 237, 146, 145, 51, 34, 97, 123, 196, 90, 174, 41, 170, 173, 221, 41, 193, 175, 39, 7, 151, 178, 0, 230, 152, 218, 8, 206, 206, 170, 84, 111, 145, 26, 208, 158, 240, 246, 219, 228, 34, 31, 163, 11, 130, 16, 199, 111, 224, 4, 112, 46, 84, 0, 104, 229, 38, 39, 63, 53, 189, 0, 157, 32, 38, 34, 109, 0, 171, 114, 244, 34, 59, 9, 232, 150, 192, 247, 175, 104, 143, 171, 42, 219, 66, 66, 194, 191, 218, 121, 59, 92, 42, 37, 158, 13, 108, 210, 189, 9, 203, 204, 32, 48, 91, 212, 101, 193, 19, 227, 107, 25, 133, 70, 2, 220, 83, 206, 71, 102, 245, 104, 252, 87, 109, 190, 56, 34, 180}
Private blob As New StrongNamePublicKeyBlob(b1)
' Use this version number.
Private v1 As New Version("1.0.0.0")
' IsSubsetOf determines whether the current permission is a subset of the specified permission.
Private Function IsSubsetOfDemo() As Boolean
Dim returnValue As Boolean = True
Dim snIdPerm1, snIdPerm2 As StrongNameIdentityPermission
snIdPerm1 = New StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", New Version("1.0.0.0"))
snIdPerm2 = New StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", New Version("1.0.0.0"))
If snIdPerm1.IsSubsetOf(snIdPerm2) Then
Console.WriteLine("MyCompany.MyDepartment.* is a subset " + "of MyCompany.MyDepartment.MyFile " + vbLf)
Else
Console.WriteLine("MyCompany.MyDepartment.*" + " is not a subset of MyCompany.MyDepartment.MyFile " + vbLf)
End If
Return returnValue
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 returnValue As Boolean = True
Dim snIdPerm1, snIdPerm2 As StrongNameIdentityPermission
Dim snIdPerm3 As IPermission
snIdPerm1 = New StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", New Version("1.0.0.0"))
snIdPerm2 = New StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", New Version("1.0.0.0"))
snIdPerm3 = CType(snIdPerm1.Union(snIdPerm2), StrongNameIdentityPermission)
Try
Console.WriteLine("The union of MyCompany.MyDepartment.*" + "and MyCompany.MyDepartment.MyFile is " + CType(snIdPerm3, StrongNameIdentityPermission).Name.ToString())
Catch e As Exception
Console.WriteLine("An expected exception was thrown: " + e.Message)
End Try
Return returnValue
End Function 'UnionDemo
' Intersect creates and returns a new permission that is the intersection of the current
' permission and the permission specified.
Private Function IntersectDemo() As Boolean
Dim returnValue As Boolean = True
Dim snIdPerm1, snIdPerm2, snIdPerm3 As StrongNameIdentityPermission
snIdPerm1 = New StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", New Version("1.0.0.0"))
snIdPerm2 = New StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", New Version("1.0.0.0"))
Try
snIdPerm3 = CType(snIdPerm1.Intersect(snIdPerm2), StrongNameIdentityPermission)
Console.WriteLine("The intersection of MyCompany.MyDepartment.*" + "MyCompany.MyDepartment.MyFile is " + CType(snIdPerm3, StrongNameIdentityPermission).Name.ToString())
Catch e As Exception
Console.WriteLine("An exception was thrown: " + e.ToString())
returnValue = False
End Try
Return returnValue
End Function 'IntersectDemo
'Copy creates and returns an identical copy of the current permission.
Private Function CopyDemo() As Boolean
Dim returnValue As Boolean = True
Dim snIdPerm1, snIdPerm2 As StrongNameIdentityPermission
snIdPerm1 = New StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", New Version("1.0.0.0"))
snIdPerm2 = New StrongNameIdentityPermission(PermissionState.None)
snIdPerm2 = CType(snIdPerm1.Copy(), StrongNameIdentityPermission)
Console.WriteLine("Result of copy = " + snIdPerm2.ToString() + vbLf)
Return returnValue
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 returnValue As Boolean = True
Dim snIdPerm1, snIdPerm2 As StrongNameIdentityPermission
snIdPerm1 = New StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", New Version("1.0.0.0"))
snIdPerm2 = New StrongNameIdentityPermission(PermissionState.None)
snIdPerm2.FromXml(snIdPerm1.ToXml())
Console.WriteLine("Result of ToFromXml = " + snIdPerm2.ToString() + vbLf)
Return returnValue
End Function 'ToFromXmlDemo
' Invoke all demos.
Public Function runDemo() As Boolean
Dim ret As Boolean = True
Dim retTmp As Boolean
' Call the IsSubsetOf demo.
retTmp = IsSubsetOfDemo()
If retTmp Then
Console.Out.WriteLine("IsSubsetOf demo completed successfully.")
Else
Console.Out.WriteLine("IsSubsetOf demo failed.")
End If
ret = retTmp AndAlso ret
' Call the Union demo.
retTmp = UnionDemo()
If retTmp Then
Console.Out.WriteLine("Union demo completed successfully.")
Else
Console.Out.WriteLine("Union demo failed.")
End If
ret = retTmp AndAlso ret
' Call the Intersect demo.
retTmp = IntersectDemo()
If retTmp Then
Console.Out.WriteLine("Intersect demo completed successfully.")
Else
Console.Out.WriteLine("Intersect demo failed.")
End If
ret = retTmp AndAlso ret
' Call the Copy demo.
retTmp = CopyDemo()
If retTmp Then
Console.Out.WriteLine("Copy demo completed successfully")
Else
Console.Out.WriteLine("Copy demo failed.")
End If
ret = retTmp AndAlso ret
' Call the ToFromXml demo.
retTmp = ToFromXmlDemo()
If retTmp Then
Console.Out.WriteLine("ToFromXml demo completed successfully")
Else
Console.Out.WriteLine("ToFromXml demo failed.")
End If
ret = retTmp AndAlso ret
Console.WriteLine("********************************************************" + ControlChars.Lf)
Return ret
End Function 'runDemo
' Test harness.
Public Overloads Shared Sub Main(ByVal args() As [String])
Try
Dim democase As New StrongNameIdentityDemo()
Dim ret As Boolean = democase.runDemo()
If ret Then
Console.Out.WriteLine("StrongNameIdentity 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("StrongNameIdentity 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("StrongNameIdentity 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 'StrongNameIdentityDemo
using System;
using System.Security;
using System.Security.Permissions;
public class StrongNameIdentityDemo
{
// Public key
static byte[] b1 = { 0, 36, 0, 0, 4, 128, 0, 0, 148, 0, 0, 0, 6, 2, 0, 0, 0, 36, 0, 0,
82, 83, 65, 49, 0, 4, 0, 0, 1, 0, 1, 0, 237, 146, 145, 51, 34,
97, 123, 196, 90, 174, 41, 170, 173, 221, 41, 193, 175, 39, 7,
151, 178, 0, 230, 152, 218, 8, 206, 206, 170,84, 111, 145, 26,
208, 158, 240, 246, 219, 228, 34, 31, 163, 11, 130, 16, 199, 111,
224, 4, 112, 46, 84, 0, 104, 229, 38, 39, 63, 53, 189, 0, 157,
32, 38, 34, 109, 0, 171, 114, 244, 34, 59, 9, 232, 150, 192, 247,
175, 104, 143, 171, 42, 219, 66, 66, 194, 191, 218, 121, 59, 92,
42, 37, 158, 13, 108, 210, 189, 9, 203, 204, 32, 48, 91, 212, 101,
193, 19, 227, 107, 25, 133, 70, 2, 220, 83, 206, 71, 102, 245, 104,
252, 87, 109, 190, 56, 34, 180};
StrongNamePublicKeyBlob blob = new StrongNamePublicKeyBlob(b1);
// Use this version number.
Version v1 = new Version("1.0.0.0");
// IsSubsetOf determines whether the current permission is a subset of the specified permission.
private bool IsSubsetOfDemo()
{
bool returnValue = true;
StrongNameIdentityPermission snIdPerm1, snIdPerm2;
snIdPerm1 = new StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", new Version("1.0.0.0"));
snIdPerm2 = new StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", new Version("1.0.0.0"));
if (snIdPerm1.IsSubsetOf(snIdPerm2))
{
Console.WriteLine("MyCompany.MyDepartment.* is a subset " +
"of MyCompany.MyDepartment.MyFile \n");
}
else
{
Console.WriteLine("MyCompany.MyDepartment.*" +
" is not a subset of MyCompany.MyDepartment.MyFile \n");
}
return returnValue;
}
// Union creates a new permission that is the union of the current permission and the specified permission.
private bool UnionDemo()
{
bool returnValue = true;
StrongNameIdentityPermission snIdPerm1, snIdPerm2;
IPermission snIdPerm3;
snIdPerm1 = new StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", new Version("1.0.0.0"));
snIdPerm2 = new StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", new Version("1.0.0.0"));
snIdPerm3 = (StrongNameIdentityPermission)snIdPerm1.Union(snIdPerm2);
try
{
Console.WriteLine("The union of MyCompany.MyDepartment.*" +
"and MyCompany.MyDepartment.MyFile is " +
((StrongNameIdentityPermission)snIdPerm3).Name.ToString());
}
catch (Exception e)
{
Console.WriteLine("An expected exception was thrown: " + e.Message);
}
return returnValue;
}
// Intersect creates and returns a new permission that is the intersection of the current
// permission and the permission specified.
private bool IntersectDemo()
{
bool returnValue = true;
StrongNameIdentityPermission snIdPerm1, snIdPerm2, snIdPerm3;
snIdPerm1 = new StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", new Version("1.0.0.0"));
snIdPerm2 = new StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", new Version("1.0.0.0"));
try
{
snIdPerm3 = (StrongNameIdentityPermission)snIdPerm1.Intersect(snIdPerm2);
Console.WriteLine("The intersection of MyCompany.MyDepartment.*"
+ "MyCompany.MyDepartment.MyFile is "
+ ((StrongNameIdentityPermission)snIdPerm3).Name.ToString());
}
catch (Exception e)
{
Console.WriteLine("An exception was thrown: " + e);
returnValue = false;
}
return returnValue;
}
//Copy creates and returns an identical copy of the current permission.
private bool CopyDemo()
{
bool returnValue = true;
StrongNameIdentityPermission snIdPerm1, snIdPerm2;
snIdPerm1 = new StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", new Version("1.0.0.0"));
snIdPerm2 = new StrongNameIdentityPermission(PermissionState.None);
snIdPerm2 = (StrongNameIdentityPermission)snIdPerm1.Copy();
Console.WriteLine("Result of copy = " + snIdPerm2.ToString() + "\n");
return returnValue;
}
// 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()
{
bool returnValue = true;
StrongNameIdentityPermission snIdPerm1, snIdPerm2;
snIdPerm1 = new StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", new Version("1.0.0.0"));
snIdPerm2 = new StrongNameIdentityPermission(PermissionState.None);
snIdPerm2.FromXml(snIdPerm1.ToXml());
Console.WriteLine("Result of ToFromXml = " + snIdPerm2.ToString() + "\n");
return returnValue;
}
// Invoke all demos.
public bool RunDemo()
{
bool ret = true;
bool retTmp;
// Call the IsSubsetOf demo.
if (retTmp = IsSubsetOfDemo()) Console.Out.WriteLine("IsSubsetOf demo completed successfully.");
else
Console.Out.WriteLine("IsSubsetOf demo failed.");
ret = retTmp && ret;
// Call the Union demo.
if (retTmp = UnionDemo()) Console.Out.WriteLine("Union demo completed successfully.");
else
Console.Out.WriteLine("Union demo failed.");
ret = retTmp && ret;
// Call the Intersect demo.
if (retTmp = IntersectDemo()) Console.Out.WriteLine("Intersect demo completed successfully.");
else
Console.Out.WriteLine("Intersect demo failed.");
ret = retTmp && ret;
// Call the Copy demo.
if (retTmp = CopyDemo()) Console.Out.WriteLine("Copy demo completed successfully");
else
Console.Out.WriteLine("Copy demo failed.");
ret = retTmp && ret;
// Call the ToFromXml demo.
if (retTmp = ToFromXmlDemo()) Console.Out.WriteLine("ToFromXml demo completed successfully");
else
Console.Out.WriteLine("ToFromXml demo failed.");
ret = retTmp && ret;
Console.WriteLine("********************************************************\n");
return (ret);
}
// Test harness.
public static void Main(String[] args)
{
try
{
StrongNameIdentityDemo democase = new StrongNameIdentityDemo();
bool ret = democase.RunDemo();
if (ret)
{
Console.Out.WriteLine("StrongNameIdentity demo completed successfully.");
Console.Out.WriteLine("Press the Enter key to exit.");
string consoleInput = Console.ReadLine();
System.Environment.ExitCode = 100;
}
else
{
Console.Out.WriteLine("StrongNameIdentity 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("StrongNameIdentity demo failed.");
Console.WriteLine(e.ToString());
Console.Out.WriteLine("Press the Enter key to exit.");
string consoleInput = Console.ReadLine();
System.Environment.ExitCode = 101;
}
// Catch non-CLSCompliant exceptions.
catch
{
Console.WriteLine("An unexpected non-CLSCompliant exception was thrown.");
}
}
}
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Runtime::InteropServices;
// This class generates StrongNameIdentityPermission objects.
[assembly:CLSCompliant(true)];
public ref class StrongNameIdentityDemo
{
private:
// Public key
static array<Byte>^b1 = {0,36,0,0,4,128,0,0,148,0,0,0,6,2,0,0,0,36,0,0,82,83,65,49,0,4,0,0,1,0,1,0,237,146,145,51,34,97,123,196,90,174,41,170,173,221,41,193,175,39,7,151,178,0,230,152,218,8,206,206,170,84,111,145,26,208,158,240,246,219,228,34,31,163,11,130,16,199,111,224,4,112,46,84,0,104,229,38,39,63,53,189,0,157,32,38,34,109,0,171,114,244,34,59,9,232,150,192,247,175,104,143,171,42,219,66,66,194,191,218,121,59,92,42,37,158,13,108,210,189,9,203,204,32,48,91,212,101,193,19,227,107,25,133,70,2,220,83,206,71,102,245,104,252,87,109,190,56,34,180};
static StrongNamePublicKeyBlob^ blob = gcnew StrongNamePublicKeyBlob( b1 );
// Use this version number.
static Version^ v1 = gcnew Version( "1.0.0.0" );
// IsSubsetOf determines whether the current permission is a subset of the specified permission.
bool IsSubsetOfDemo()
{
bool returnValue = true;
StrongNameIdentityPermission^ snIdPerm1;
StrongNameIdentityPermission^ snIdPerm2;
snIdPerm1 = gcnew StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", gcnew Version("1.0.0.0"));
snIdPerm2 = gcnew StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", gcnew Version("1.0.0.0"));
if (snIdPerm1->IsSubsetOf(snIdPerm2))
{
Console::WriteLine("MyCompany.MyDepartment.* is a subset " +
"of MyCompany.MyDepartment.MyFile \n");
}
else
{
Console::WriteLine("MyCompany.MyDepartment.*" +
" is not a subset of MyCompany.MyDepartment.MyFile \n");
}
return returnValue;
}
// Union creates a new permission that is the union of the current permission and the specified permission.
bool UnionDemo()
{
bool returnValue = true;
StrongNameIdentityPermission^ snIdPerm1;
StrongNameIdentityPermission^ snIdPerm2;
IPermission^ snIdPerm3;
snIdPerm1 = gcnew StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", gcnew Version("1.0.0.0"));
snIdPerm2 = gcnew StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", gcnew Version("1.0.0.0"));
snIdPerm3 = dynamic_cast<StrongNameIdentityPermission^>(snIdPerm1->Union( snIdPerm2 ));
snIdPerm3 = snIdPerm1->Union( snIdPerm2 );
try
{
Console::WriteLine("The union of MyCompany.MyDepartment.*" +
"and MyCompany.MyDepartment.MyFile is " +
(dynamic_cast<StrongNameIdentityPermission^>(snIdPerm3))->Name);
}
catch (Exception^ e)
{
Console::WriteLine("An expected exception was thrown: " + e->Message);
}
return returnValue;
}
// Intersect creates and returns a new permission that is the intersection of the current
// permission and the permission specified.
bool IntersectDemo()
{
bool returnValue = true;
StrongNameIdentityPermission^ snIdPerm1;
StrongNameIdentityPermission^ snIdPerm2;
StrongNameIdentityPermission^ snIdPerm3;
snIdPerm1 = gcnew StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", gcnew Version("1.0.0.0"));
snIdPerm2 = gcnew StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.MyFile", gcnew Version("1.0.0.0"));
try
{
snIdPerm3 = dynamic_cast<StrongNameIdentityPermission^>(snIdPerm1->Intersect(snIdPerm2));
Console::WriteLine("The intersection of MyCompany.MyDepartment.*" +
"and MyCompany.MyDepartment.MyFile is " +
(dynamic_cast<StrongNameIdentityPermission^>(snIdPerm3))->Name);
}
catch (Exception^ e)
{
Console::WriteLine("An exception was thrown: " + e);
returnValue = false;
}
return returnValue;
}
//Copy creates and returns an identical copy of the current permission.
bool CopyDemo()
{
bool returnValue = true;
StrongNameIdentityPermission^ snIdPerm1;
StrongNameIdentityPermission^ snIdPerm2;
snIdPerm1 = gcnew StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", gcnew Version("1.0.0.0"));
snIdPerm2 = gcnew StrongNameIdentityPermission(PermissionState::None);
snIdPerm2 = dynamic_cast<StrongNameIdentityPermission^>(snIdPerm1->Copy());
Console::WriteLine("Result of copy = " + snIdPerm2->ToString() + "\n");
return returnValue;
}
// 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()
{
bool returnValue = true;
StrongNameIdentityPermission^ snIdPerm1;
StrongNameIdentityPermission^ snIdPerm2;
snIdPerm1 = gcnew StrongNameIdentityPermission(blob, "MyCompany.MyDepartment.*", gcnew Version("1.0.0.0"));
snIdPerm2 = gcnew StrongNameIdentityPermission(PermissionState::None);
snIdPerm2->FromXml(snIdPerm1->ToXml());
Console::WriteLine("Result of ToFromXml = " + snIdPerm2->ToString() + "\n");
return returnValue;
}
public:
// Invoke all demos.
bool RunDemo()
{
bool ret = true;
bool retTmp;
// Call the IsSubsetOf demo.
if ( retTmp = IsSubsetOfDemo() )
Console::WriteLine( "IsSubsetOf demo completed successfully." );
else
Console::WriteLine( "IsSubsetOf demo failed." );
ret = retTmp && ret;
// Call the Union demo.
if ( retTmp = UnionDemo() )
Console::WriteLine( "Union demo completed successfully." );
else
Console::WriteLine( "Union demo failed." );
ret = retTmp && ret;
// Call the Intersect demo.
if ( retTmp = IntersectDemo() )
Console::WriteLine( "Intersect demo completed successfully." );
else
Console::WriteLine( "Intersect demo failed." );
ret = retTmp && ret;
// Call the Copy demo.
if ( retTmp = CopyDemo() )
Console::WriteLine( "Copy demo completed successfully" );
else
Console::WriteLine( "Copy demo failed." );
ret = retTmp && ret;
// Call the ToFromXml demo.
if ( retTmp = ToFromXmlDemo() )
Console::WriteLine( "ToFromXml demo completed successfully" );
else
Console::WriteLine( "ToFromXml demo failed." );
ret = retTmp && ret;
Console::WriteLine( "********************************************************\n" );
return (ret);
}
};
// Test harness.
int main()
{
try
{
StrongNameIdentityDemo^ democase = gcnew StrongNameIdentityDemo;
bool ret = democase->RunDemo();
if ( ret )
{
Console::WriteLine( "StrongNameIdentity demo completed successfully." );
Console::WriteLine( "Press the Enter key to exit." );
Console::ReadLine();
System::Environment::ExitCode = 100;
}
else
{
Console::WriteLine( "StrongNameIdentity demo failed." );
Console::WriteLine( "Press the Enter key to exit." );
Console::ReadLine();
System::Environment::ExitCode = 101;
}
}
catch ( Exception^ e )
{
Console::WriteLine( "StrongNameIdentity demo failed." );
Console::WriteLine( e );
Console::WriteLine( "Press the Enter key to exit." );
Console::ReadLine();
System::Environment::ExitCode = 101;
}
}
Vererbungshierarchie
System.Object
System.Security.CodeAccessPermission
System.Security.Permissions.StrongNameIdentityPermission
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
StrongNameIdentityPermission-Member
System.Security.Permissions-Namespace
StrongNameIdentityPermission-Klasse
StrongNamePublicKeyBlob
StrongName
StrongNameMembershipCondition
Weitere Ressourcen
Sicherheitsberechtigungen
Anfordern von Berechtigungen
Assemblys mit starkem Namen