Imports System.DirectoryServices.AccountManagement
In WPF development you can’t just use the “My.User.Name” classes as it is not set by default. If you still want to use it you can “My.User.InitializeWithWindowsUser()” to have it setup, but there is a better way.
If you are using Active Directory .Net 3.5 has provided a new way to access information…
There is a new assembly called “System.DirectoryServices.AccountManagement” that encapsulates all of the logic for accessing security information in a number of ways.
You can create a link to your local Active Directory by calling:
Dim ctx As New PrincipalContext(ContextType.Domain)
The options for conencting are:
-
ApplicationDirectory - The application directory store. This represents the AD LDS store.
-
Domain - The domain store. This represents the AD DS store.
-
Machine - The computer store. This represents the SAM store.
These options allow for most security authentications in your .NET applications, and it does not stop with wrapping the top level AD. if you want to access and control a user you need only:
Dim u As UserPrincipal = UserPrincipal.FindByIdentity(ctx, IdentityType.Sid, WindowsIdentity.GetCurrent.User.Value)
I really like this as often I have has to build and Google (more the later than the former) class library for manipulating Active Directory objects, and you need not just use the Sid. You can use:
-
DistinguishedName - The identity is a Distinguished Name (DN).
-
Guid - The identity is a Globally Unique Identifier (GUID).
-
Name - The identity is a name.
-
SamAccountName - The identity is a Security Account Manager (SAM) name.
-
Sid - The identity is a Security Identifier (SID) in Security Descriptor Definition Language (SDDL) format.
-
UserPrincipalName - The identity is a User Principal Name (UPN).
And this is just the direct load of a user object. There are Group object as well as fill search capability with the PrincipalSearcher and various other bits and bobs…
Well thats my find of the day 
What to read next
Removing ACL's for dead AD accounts
Explains how to identify and remove access control entries (ACLs) for deleted Active Directory accounts using .NET, including challenges and …
Where am I?
Describes a .NET application that tracks users’ locations via IP, updates Active Directory, and uses LINQ for database queries, aiding …
Detecting agile theatre with real delivery signals
Why Most Companies Operating Models Fail in Dynamic Markets
A concise comparison of Predictive and Adaptive Operating Models, explaining why traditional structures fail in dynamic markets and how …
Don’t Manage Dependencies, Remove Them
Explains why dependencies are a sign of poor system design and outlines steps to eliminate them by aligning teams, clarifying ownership, and …
The Estimation Trap: How Tracking Accuracy Undermines Trust, Flow, and Value in Software Delivery
Tracking estimation accuracy in software delivery leads to mistrust, fear, and distorted behaviours. Focus on customer value, flow, and …
Flow of Value vs Flow of Work – Misnomer or Useful Shorthand?
Compares “flow of value” and “flow of work” in Kanban, explaining why only validated outcomes count as value and stressing the need for …
Why Outsourcing DevOps Fails, and How Real Engineering Excellence Starts With Your Team
Avoid DevOps vendor lock-in, discover how true engineering excellence starts with partnership, not outsourcing. Ready to transform your …