Home
Browse all 647 examples
Download all 647 examples
Download sample chapters
Reviews
Errata
Acknowledgments
Links on .NET
Paradoxal Press
Buy directly from Paradoxal Press at $33.99 (Save 43%)
Category: Programming
Level: Beginner to seasoned
900 pages
ISBN-10 097661322-0
ISBN-13 978-097661322-0
$59.99 USA
$79.99 CANADA
|
Listing 6-14 extracted from chapter
Security
Listing 6-13< > Listing 6-15
This listing can be compiled with the command line: csc.exe /target:exe Example_6_14.cs Errors: 0 Warnings: 0
Example_6_14.cs
using System;
using System.Security.AccessControl;
using System.Security.Principal;
class Program {
static void Main() {
// Create a new security descriptor.
CommonSecurityDescriptor csd = new CommonSecurityDescriptor(
false, false, string.Empty);
DiscretionaryAcl dacl = csd.DiscretionaryAcl;
// Add an ACE to its ACL.
dacl.AddAccess(
AccessControlType.Allow, // Allow OR Deny.
WindowsIdentity.GetCurrent().Owner, // Current user.
0x00180000, // Mask: TakeOwnerShip AND Synchronize
// equivalent to
//(int) MutexRights.TakeOwnership | (int) MutexRights.Synchronize
InheritanceFlags.None, // Disable ACE inheritance.
PropagationFlags.None);
string sSDDL = csd.GetSddlForm( AccessControlSections.Owner );
Console.WriteLine( "Security Descriptor : " + sSDDL );
MutexSecurity mutexSec = new MutexSecurity();
mutexSec.SetSecurityDescriptorSddlForm( sSDDL );
AuthorizationRuleCollection aces = mutexSec.GetAccessRules(
true, true, typeof(NTAccount));
foreach ( AuthorizationRule ace in aces ) {
if (ace is MutexAccessRule) {
MutexAccessRule mutexAce = (MutexAccessRule)ace;
Console.WriteLine( "-->SID : " +
mutexAce.IdentityReference.Value );
Console.WriteLine( " Kind of access right : " +
mutexAce.AccessControlType.ToString());
if (0xffffffff == (uint) mutexAce.MutexRights)
Console.WriteLine( " Full rights!" );
else
Console.WriteLine( " Rights : " +
mutexAce.MutexRights.ToString());
}
}
}
}
Copyright Patrick Smacchia 2006 2007
|