如何获取Windows域名?

2024-01-12

我如何获取机器的域名(如果机器实际上已加入域)?

当然,如果机器没有加入域,该函数应该返回

  • null, or
  • 一个空字符串,或者
  • 机器的名称,或
  • "."

Notes:

  • the NetGetJoinInformation http://msdn.microsoft.com/en-us/library/windows/desktop/aa370423%28v=vs.85%29.aspxWin32 函数返回域的旧 NetBIOS 名称(例如AVATOPIA),而不是域名(例如avatopia.local)

  • the USERDOMAIN环境变量返回登录用户的域,可以与本机不同;并且还返回域的旧 NetBIOS 名称(例如AVATOPIA)

  • the USERDNSDOMAIN环境变量返回登录用户的域名,可以与本机不同

微软有一篇知识库文章如何在 Windows NT、Windows 2000 或 Windows XP 上检索当前用户名和域名 http://support.microsoft.com/kb/111544,它依赖于获取用户的安全令牌并调用 LookupAccountSid。

  • LookupAccountSid Win32 函数返回域的旧 NetBIOS 名称(例如AVATOPIA);并且还返回登录用户的域,该域可以与计算机不同

更新一

我还尝试使用 ADs 对象绑定到IADs域接口:

IADs domain;
ADsGetObject("LDAP://rootDES", IDs, out domain);

这种方法的问题在于:

  • 您无法获取域名(仅专有名称)
  • 如果用户没有查询 AD 的权限,则不起作用
  • 如果用户不是活动目录中的有效用户,它将不起作用
  • 它仅适用于 Active Directory 域

更新二:

只是为了明确我想要的是:

  • 选择了哪个单选按钮
  • (选定的)框中有什么 http://4.bp.blogspot.com/-_WOWYdYK4Tg/TlPERL1jhvI/AAAAAAAABIQ/CUXUCTRU4lc/s400/se7en_movie_still.jpg

奖励阅读

  • 如何在Delphi中获得Windows上的完全限定域名 https://stackoverflow.com/questions/8446940/how-to-get-fully-qualified-domain-name-on-windows-in-delphi(用户的域)
  • .NET 中机器的域名? https://stackoverflow.com/questions/508911/machines-domain-name-in-net(来自.NET)

干得好:

#include <Windows.h>
#include <DSRole.h>

#pragma comment(lib, "netapi32.lib")

#include <stdio.h>

int main(int argc, char ** argv)
{
    DSROLE_PRIMARY_DOMAIN_INFO_BASIC * info;
    DWORD dw;

    dw = DsRoleGetPrimaryDomainInformation(NULL,
                                           DsRolePrimaryDomainInfoBasic,
                                           (PBYTE *)&info);
    if (dw != ERROR_SUCCESS)
    {
        wprintf(L"DsRoleGetPrimaryDomainInformation: %u\n", dw);
        return dw;
    }

    if (info->DomainNameDns == NULL)
    {
        wprintf(L"DomainNameDns is NULL\n");
    }
    else
    {
        wprintf(L"DomainNameDns: %s\n", info->DomainNameDns);
    }

    return 0;
}

任何人使用DsRoleGetPrimaryDomainInformation http://msdn.microsoft.com/en-us/library/windows/desktop/ms676042%28v=vs.85%29.aspx在生产使用中应该考虑调用DsRoleFreeMemory http://msdn.microsoft.com/en-us/library/windows/desktop/ms676041%28v=vs.85%29.aspx当不再需要信息时释放内存块(根据评论中的讨论)。

该函数返回三个不同的域名 http://msdn.microsoft.com/en-us/library/windows/desktop/ms676046%28v=vs.85%29.aspx, e.g.:

  • 域林名称: e.g. stackoverflow.com
  • 域名 DNS 名称: e.g. stackoverflow.com
  • 域 NetBIOS 名称: e.g. STACKOVERFLOW

如果计算机未加入域,则两者Forest and dns为空,仅 NetBios 名称填充工作组的名称,例如:

  • 域林名称: null
  • 域名 DNS 名称: e.g. null
  • 域 NetBIOS 名称: e.g. WORKGROUP

该函数还返回一个标志,指示计算机是否已加入域:

  • DsRole_RoleMemberWorkstation:属于域成员的工作站
  • DsRole_RoleMemberServer:属于域成员的服务器
  • DsRole_RolePrimaryDomainController:主域控制器
  • DsRole_RoleBackupDomainController:备份域控制器

or not:

  • DsRole_RoleStandaloneWorkstation:不是域成员的工作站
  • DsRole_RoleStandaloneServer:不是域成员的服务器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取Windows域名? 的相关文章

随机推荐

  • 如何为 android ndk 安装 libiconv?

    有人可以教我或给我指点如何为 Android 安装 libiconv 的教程吗 我已经用谷歌搜索了三天 但找不到教程或操作方法 获取 libiconv 源代码 并创建 Android mk makefile 看着这个网站 http grou
  • Drools 中类型不安全的对象字段访问

    我正在使用一个系统 其中插入 Drools 引擎的一些数据遵循以下 严重过度简化 格式 public class Item public String getValueType public Object getValue 这些值可能有几种
  • R 快速 XML 解析

    当前在 R 中将 XML 文件转换为数据帧的最快方法是什么 XML 如下所示 注意 并非所有行都包含所有字段
  • ValueError:名称投影仪的重复插件

    Running tensorboard logdir log dir我收到错误 Traceback most recent call last File home user local bin tensorboard line 11 in
  • 如何使用条形图缩放 Seaborn 的 y 轴

    我在用着factorplot kind bar 如何缩放 y 轴 例如使用对数刻度 我尝试修改绘图的轴 但这总是以某种方式弄乱条形图 所以请先尝试您的解决方案以确保它确实有效 考虑到你的问题提到barplot我想我也会为这种类型的情节添加一
  • 异步 MVVM 命令

    我一直在关注 Stephen Cleary 在 MSDN 杂志上发表的相当优秀的系列文章 异步 MVVM 应用程序的模式 https msdn microsoft com en us magazine dn630647 aspx 并一直在使
  • pydicom“数据集”对象没有属性“TransferSyntaxUID”

    我正在使用 pydicom 1 0 0a1 从下载here https github com pydicom pydicom 当我运行以下代码时 ds pydicom read file DR abnormal abc dcm force
  • 一个季度的周数

    我试图根据日期获取给定季度的周数 我目前有这个公式 1 WEEKNUM EDATE Y4 1 WEEKNUM DATE YEAR EDATE Y4 1 LOOKUP MONTH EDATE Y4 1 1 4 7 10 1 But for J
  • 没有名为 urllib3 的模块

    我编写了一个调用 API 的脚本 并于上周成功运行了它 这周 它不会运行 我收到以下错误消息 Traceback most recent call last File user audit py line 2 in
  • 对基于 REST 的 API 到底是什么感到困惑

    我试图了解基于 REST 的 API 到底是什么 据我了解 这只是在 API 中编写函数的约定 所有函数都应该是 GET POST DELETE PUT 形式吗 因此 例如 REST API 中的函数可以是 public string ge
  • 将虚拟地址转换为物理地址

    The following page table is for a system with 16 bit virtual and physical addresses and with 4 096 byte pages The refere
  • endUpdates 后 UITableView 部分页脚视图位置

    在 ios8 上 我使用核心数据表视图控制器 删除行后 我的部分页脚视图突然一直下降到底部UITableView 当我滚动表格视图时 页脚视图返回到其位置 如何解决这个问题以及为什么会发生这种情况 这是代码以防万一 void control
  • Spark 读取镶木地板文件时出现问题

    我有 2 个镶木地板零件文件part 00043 0bfd7e28 6469 4849 8692 e625c25485e2 c000 snappy parquet 是 2017 年 11 月 14 日运行的部分文件 和part 00199
  • Cube、Rollup 和 GroupBy 运算符之间有什么区别?

    我找不到有关差异的任何详细文档 我确实注意到了差异 因为交换时cube and groupBy函数调用 我得到不同的结果 我注意到对于结果使用cube 我在以前使用的表达式上得到了很多空值groupBy 它们的工作方式不同 groupBy简
  • 如何控制鼠标光标? [复制]

    这个问题在这里已经有答案了 我的表单只有几个按钮 我想知道现在光标下有什么按钮 附 也许它是重复的 但我找不到这个问题的答案 看一下GetChildAtPoint http msdn microsoft com en us library
  • 自定义 QStyledItemDelegate 以绘制多种颜色的文本

    我想在一个中显示两列QTableWidget显示两次刺痛之间的差异 通过之前的一些编辑距离算法计算 这些部分存储在每个部分的数据中QTableWidgetItem as a QStringList 第一部分必须显示为黑色 接下来的部分必须显
  • 如何通过poi为word中的不同部分设置页码

    我的文档由三部分组成 封面 内容和正文 我想为每个部分设置不同的页码 封面不需要页码 内容页码采用罗马数字 正文页码采用希腊数字 用POI可以实现吗 Apache poi到目前为止 只有 abel 创建了三种类型的页眉 页脚 页眉页脚类型
  • Java FileReader 找不到文件

    我决定开始一个新问题 以便它可以严格关注 FileReader 错误 这是一种接受文件名和新文件所需的输出名称的方法 假设输入的文件名是 hello txt 该方法使其类似于 home User hello txt 它作为参数进入 File
  • 获取配置文件的跨平台路径(C/C++)

    我想将应用程序的设置存储在配置文件中 在 Linux 和 Mac 下 这 可能 是 home user config app conf 而在 Windows 下 它 可能 是 C Documents and Settings usernam
  • 如何获取Windows域名?

    我如何获取机器的域名 如果机器实际上已加入域 当然 如果机器没有加入域 该函数应该返回 null or 一个空字符串 或者 机器的名称 或 Notes the NetGetJoinInformation http msdn microsof