user-0 提问: 如何根据本计算机名判断其是否在某个域里？

回复:
user: user-0
content: 结贴了，这个是C#写的查找域中所有的计算机名称，可以把要查询的计算机名称在list里面查询，看是否存在，如果存在则是域中计算机，不是则不在域中，不过这有个问题，就是你要查询的计算机名称有可能在域中有重名的情况，就是说有另外一个机器也叫这个名字，那就没法确定你要查的机器到底是不是在域里了         public static bool GetComputerList(string domainpath, string admin, string adminpwd, ref List<string> pcList)         {             try             {                 //这里必须是这种类型的格式才能获取到                 //LDAP://ry.com/CN=Computers,DC=ry,DC=com                 //这里对传入的参数进行处理                 string strDomain = "LDAP://";                 strDomain += domainpath;                 strDomain += "/CN=Computers,DC=";                 //接下来拆分域名                 int pos = domainpath.IndexOf('.');                 if (pos == -1)                 {                     return false;                 }                 else                 {                     string temp = domainpath.Substring(0, pos);                     strDomain += temp;                     strDomain += ",DC=";                     temp = domainpath.Substring(pos + 1, domainpath.Length - pos - 1);                     strDomain += temp;                  }                   DirectoryEntry entry = new DirectoryEntry(strDomain, admin, adminpwd);                  if (entry.Children != null)                 {                      foreach (DirectoryEntry domain in entry.Children)                     {                         string temp = domain.Properties["userAccountControl"].Value.ToString();                         if (temp == "4098" || temp=="4128")//4098:是已经和计算机管理过，被禁止的账户 4128:新建的账户，未使用过。                         {                             //pcList.Add(domain.Name);                             string strName = domain.Name;                             int iPos = strName.IndexOf("CN=");                             if (iPos == -1)                             {                                 pcList.Add(strName);                             }                             else                             {                                 strName = strName.Substring(iPos + 3, strName.Length - iPos - 3);                                 pcList.Add(strName);                             }                         }                     }                 }                 else                 {                     return false;                 }             }             catch (System.Exception ex)             {                 return false;             }              return true;         }

user: user-1
content: 字符串匹配呗

user: user-0
content: #include "stdafx.h" #include "ifdns.h" #include <Lmjoin.h> #include <lm.h> #include <LsaLookup.h> #include <windows.h> #include "ntsecapi.h"  #pragma comment(lib, "Netapi32.lib")  LPWSTR name; NETSETUP_JOIN_STATUS njs = NetSetupUnknownStatus; NETSETUP_JOIN_STATUS njgg = NetSetupUnknownStatus; NET_API_STATUS iRetGetType = NetGetJoinInformation(NULL,&name, &njs);  新建个控制台可以直接运行是不是在域里可以根据njs的值来判断，如果是3则是在域里，如果是1则不在域里 这种方法是判断本机是否在域里，但是怎么判断本机是否在指定的域里

user: user-0
content: 运行出来结果是 Domain ------------------------------------------------------------------------------- MSHOME                RY                    WORKGROUP             命令成功完成。  //我的问题是怎么判断一个计算机是否在指定的域里呢？ 比如名字叫WWW的计算机是否在DNS是192.168.0.179的域里

user: user-2
content: system("net view /domain >d:\\domain.txt"); //然后读文件d:\\domain.txt的内容

user: user-0
content: 急死了，NetGetJoinInformation这个函数怎么用啊，百试不爽

user: user-0
content: 忘了说建一个控制台程序(支持mfc的)，要加上这两个头文件才行 #include <Lmjoin.h> #include <lm.h>