Overview Security Classes in VB.NET: Part 2
In this article I will explain you about Security Classes in VB.NET.
See Part 1
The table 22.5 given below lists the most common methods used with the permission classes. Three of these methods-Assert, Deny, and PermitOnly-are called overrides because they override the default behavior of the security system. When different overrides are present in the same stack frame, the runtime processes these overrides in the following order: PermitOnly, Deny, and Assert
Table 22.5: Commonly Used Methods of Permissions Classes
If, during the stack walk, the runtime discovers more than one override of the same type (e.g., two calls to Assert in one stack frame), the second override causes an exception. To replace an override, first call the appropriate revert method (e.g., RevertAssert) and then apply the new override. Also, be aware that each stack frame can have, at most, one permission set used for denial. The most recent Deny function replaces all other denials for other permission sets in the current stack frame.
In Listing 22.15, a demand for a read operation to c:\dir1\ is called. If the system refuses that demand, an exception is thrown.
Listing 22.15: Executing the Demand method of a Permissions object
' Demand
Try
Dim p As New FileIOPermission(FileIOPermissionAccess.Read, "C:\dir1\")
p.Demand()
' catch SecurityException here
Catch ex As SecurityException
End Try
The code in Listing 22.16 compares two file permissions to determine whether one is a subset of the other. If so, the subset may derive granted permissions from the "parent." For example, if file I/O permission to c:\dir1\ is granted, then file I/O permission to c:\dir1\dir2\ is also granted. Thus, you can conclude that perm2 is a subset of perm1 in this example.
Listing 22.16: IsSubsetOf Example
' IsSubsetOf tests
Imports System.Security
Imports System.Security.Permissions
Class TestClass
Shared Sub Main()
Try
' create two registry permissions
Dim perm1 As New RegistryPermission(RegistryPermissionAccess.AllAccess,
"HKEY_LOCAL_MACHINE")
Dim perm2 As New RegistryPermission(RegistryPermissionAccess.AllAccess,
"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0")
' and test which is subset of which?
Console.WriteLine(If(perm1.IsSubsetOf(perm2), "perm1 is subset of perm2.", "test1 not
successful!"))
' The program will output:
' test1 not successful!
' perm2 is subset of perm1.
'
Console.WriteLine(If(perm2.IsSubsetOf(perm1), "perm2 is subset of perm1.", "test2
notsuccessful!"))
Catch e As Exception
Console.WriteLine("SecurityException occurred! " & e.ToString())
End Try
Console.ReadLine()
End Sub
End Class
Output Window
Conclusion
Hope this article would have helped you in understanding Security Classes in VB.NET. The third part of this article you will in my next article.