C# 从计算机名中删除域名
有没有一种安全的方法可以从C#中的机器名中删除域名 示例: MYMACHINE.mydomain.com 应决心 MYMACHINE原始字符串方法:C# 从计算机名中删除域名,c#,C#,有没有一种安全的方法可以从C#中的机器名中删除域名 示例: MYMACHINE.mydomain.com 应决心 MYMACHINE原始字符串方法: string fullName = "MYMACHINE.mydomain.com"; string resolvedMachineName = fullName.Split('.')[0]; 朴素的字符串方法: string fullName = "MYMACHINE.mydomain.com"; string resolvedMachineN
string fullName = "MYMACHINE.mydomain.com";
string resolvedMachineName = fullName.Split('.')[0];
朴素的字符串方法:
string fullName = "MYMACHINE.mydomain.com";
string resolvedMachineName = fullName.Split('.')[0];
如果您想对机器名有“基本”的了解,请使用:
Environment.MachineName
它提供不带域的机器名(通常在命令提示下为COMPUTERNAME
变量)。见:
编辑#1
@反中微子-当我重新阅读我的答案时,我意识到我们没有足够的信息给你一个正确的答案。但是,当您说“machinename”时,不清楚您是想知道如何解析您拥有的字符串,还是想知道检索所需内容的正确方法。如果您只是想知道如何解析字符串,那么其他答案都是正确的。另一方面
- 您想要NetBios名称还是群集名称?然后
Environment.MachineName
- 您想要运行群集的计算机的基础名称吗?你需要这样做
- 是否要从解析到当前计算机的所有DNS字符串中获取最具体的名称?i、 e.从web1.mysite.com下载web1?你需要这样做
编辑#2
如果我理解正确的话,您的场景如下:在桌面环境中,您拥有在客户端和服务器计算机上运行的类似代码。在所有计算机注册表中,您已为服务器保存了DNS名称(server.myapp.com)。现在在代码中,您要确定机器是否是服务器 你要什么 另一个想法
您可以增加机器名,而不是缩小服务器名
string serverName = Registry.GetValue(REG_KEY, REG_VALUE, "key missing");
string currentMachine = Environment.MachineName +
Environment.GetEnvironmentVariable("USERDNSDOMAIN");
if (currentMachine.ToLower() == serverName.ToLower() ) {
//do something fancy
};
你想要什么
分发注册表项似乎有点麻烦。如果是我,我可能会做以下一项/部分/多项:
#if(RELEASE_SERVER){/*do SERVER code*/}if(RELEASE_CLIENT){/*do SERVER code*/}
如果您想对机器名有“基本”的了解,请使用:
Environment.MachineName
它提供不带域的机器名(通常在命令提示下为COMPUTERNAME
变量)。见:
编辑#1
@反中微子-当我重新阅读我的答案时,我意识到我们没有足够的信息给你一个正确的答案。但是,当您说“machinename”时,不清楚您是想知道如何解析您拥有的字符串,还是想知道检索所需内容的正确方法。如果您只是想知道如何解析字符串,那么其他答案都是正确的。另一方面
- 您想要NetBios名称还是群集名称?然后
Environment.MachineName
- 您想要运行群集的计算机的基础名称吗?你需要这样做
- 是否要从解析到当前计算机的所有DNS字符串中获取最具体的名称?i、 e.从web1.mysite.com下载web1?你需要这样做
编辑#2
如果我理解正确的话,您的场景如下:在桌面环境中,您拥有在客户端和服务器计算机上运行的类似代码。在所有计算机注册表中,您已为服务器保存了DNS名称(server.myapp.com)。现在在代码中,您要确定机器是否是服务器 你要什么 另一个想法
您可以增加机器名,而不是缩小服务器名
string serverName = Registry.GetValue(REG_KEY, REG_VALUE, "key missing");
string currentMachine = Environment.MachineName +
Environment.GetEnvironmentVariable("USERDNSDOMAIN");
if (currentMachine.ToLower() == serverName.ToLower() ) {
//do something fancy
};
你想要什么
分发注册表项似乎有点麻烦。如果是我,我可能会做以下一项/部分/多项:
#if(RELEASE_SERVER){/*do SERVER code*/}if(RELEASE_CLIENT){/*do SERVER code*/}
所以,我必须解析字符串才能找到答案?@Antineutrino我假设您已经将全名存储为字符串,您是如何将其存储的?值得注意的是,这种方法假设您总是有一个由三部分组成的路径。如果域类似于MYMACHINE.mydomain.co.uk,它将破坏您的逻辑。@Sam怎么会这样?它获取以句点分隔的元素字符串中的第一个元素。直接索引第一个元素是安全的,因为split始终至少包含一个元素element@James:我只有域名作为后缀的字符串。因此,我必须分析字符串才能找到?@Antineutrino我假设您已经将全名存储为字符串,您是如何存储它的?值得注意的是,这种方法假设您总是有一条由三部分组成的路径。如果域类似于MYMACHINE.mydomain.co.uk,它将破坏您的逻辑。@Sam怎么会这样?它获取以句点分隔的元素字符串中的第一个元素。直接索引第一个元素是安全的,因为split始终至少包含一个元素element@James:IO