【发布时间】:2012-12-11 05:51:43
【问题描述】:
我们有一个全名的域,例如long-domainname.com;此域名将替换为别名 short。可以使用netapi32.dll 检索此别名,如下所示:
[DllImport("Netapi32.dll")]
static extern int NetApiBufferFree(IntPtr Buffer);
// Returns the domain name the computer is joined to, or "" if not joined.
public static string GetJoinedDomain()
{
int result = 0;
string domain = null;
IntPtr pDomain = IntPtr.Zero;
NetJoinStatus status = NetJoinStatus.NetSetupUnknownStatus;
try
{
result = NetGetJoinInformation(null, out pDomain, out status);
if (result == ErrorSuccess &&
status == NetJoinStatus.NetSetupDomainName)
{
domain = Marshal.PtrToStringAuto(pDomain);
}
}
finally
{
if (pDomain != IntPtr.Zero) NetApiBufferFree(pDomain);
}
if (domain == null) domain = "";
return domain;
}
此方法返回 sort 值。但是使用System.DirectoryServices.ActiveDirectory.Domain 类及其Name 属性,我得到了 long-domainname.com 值。在 Debug 模式下搜索属性,我找不到任何 short 值字段或属性。 System.DirectoryServices.ActiveDirectory.Domain 类可以吗?或者可能有一些其他类的System.DirectoryServices 命名空间?如何在不导入外部*.dll的情况下获取短域名值?
【问题讨论】:
标签: c# active-directory alias domain-name