📄 directoryhelper.cs
字号:
using System;
using System.Configuration;
using System.DirectoryServices;
namespace ASPNET.StarterKit.TimeTracker.BusinessLogicLayer
{
//*********************************************************************
//
// DirectoryHelper Class
//
// Uses the DirectorySearcher .NET Framework class to retrieve user information fro
// the Active Directory or the WindowsSAM store.
//
//*********************************************************************
public class DirectoryHelper
{
private const string _activeDirectoryPath = @"GC://";
private const string _filter = "(&(ObjectClass=Person)(SAMAccountName={0}))";
private const string _windowsSAMPath = @"WinNT://";
private static string _path = String.Empty;
//*********************************************************************
//
// Methods are all static -- don't allow construction.
//
//*********************************************************************
private DirectoryHelper()
{
}
//*********************************************************************
//
// This does the core directory searching using the filters specified above.
//
//*********************************************************************
public static bool FindUser(string identification, ref string FirstName, ref string LastName)
{
bool result = false;
// Determine which method to use to retrieve user information
// WindowsSAM
if (ConfigurationSettings.AppSettings[Web.Global.CfgKeyUserAcctSource] == "WindowsSAM")
{
// Extract the machine or domain name and the user name from the
// identification string
string [] samPath = identification.Split(new char[] {'\\'});
_path = _windowsSAMPath + samPath[0];
try
{
// Find the user
DirectoryEntry entryRoot = new DirectoryEntry(_path);
DirectoryEntry userEntry = entryRoot.Children.Find(samPath[1], "user");
LastName = userEntry.Properties["FullName"].Value.ToString();
}
catch
{
result = false;
}
result = true;
}
// Active Directory
else if (ConfigurationSettings.AppSettings[Web.Global.CfgKeyUserAcctSource] == "ActiveDirectory")
{
_path = _activeDirectoryPath;
// Setup the filter
identification = identification.Substring(identification.LastIndexOf(@"\") + 1,
identification.Length - identification.LastIndexOf(@"\")-1);
string userNameFilter = string.Format(_filter, identification);
// Get a Directory Searcher to the LDAPPath
DirectorySearcher searcher = new DirectorySearcher(_path);
if (searcher == null)
{
return false;
}
// Add the properties that need to be retrieved
searcher.PropertiesToLoad.Add("givenName");
searcher.PropertiesToLoad.Add("sn");
// Set the filter for the search
searcher.Filter = userNameFilter;
try
{
// Execute the search
SearchResult search = searcher.FindOne();
if (search != null)
{
FirstName = SearchResultProperty(search, "givenName");
LastName = SearchResultProperty(search, "sn");
result = true;
}
else
result = false;
}
catch
{
result = false;
}
}
else
{
// The user has not choosen an UserAccountSource or UserAccountSource as None
// Usernames will be displayed as "Domain/Username"
result = false;
}
return result;
}
//*********************************************************************
//
// Retrieves the specified property from the SearchResult collection.
//
//*********************************************************************
private static String SearchResultProperty(SearchResult sr, string field)
{
if (sr.Properties[field] != null)
{
return (String)sr.Properties[field][0];
}
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -