gpt4 book ai didi

c# - 如何在 C# 中更改 NetworkAdapter 的名称?

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:51 25 4
gpt4 key购买 nike

人们声称以下 VB 脚本可用于更改网络适配器名称。但是,我在尝试将其转换为可以执行相同操作的 c# 应用程序时遇到了明显的困难。我似乎面临的问题是对 NetworkInterface.Name 的调用是只读的。

Option Explicit

Const NETWORK_CONNECTIONS = &H31&

Dim sOldName= WScript.Arguments(0)
Dim sNewName= WScript.Arguments(1)

Dim objShell, objFolder, colItems, objItem

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(NETWORK_CONNECTIONS)

Set colItems = objFolder.Items
For Each objItem in colItems
If objItem.Name = sOldName Then
objItem.Name =sNewName
End If
Next

我发现这个解释得更多:http://blogs.technet.com/b/heyscriptingguy/archive/2005/05/11/how-can-i-rename-a-local-area-connection.aspx .

好的,所以有存储 NIC 名称的特殊文件夹,您可以通过 SHELL 绑定(bind)到这些文件夹来访问这些文件夹。那么你如何在 C# 中做这样的事情?

最佳答案

如果您了解注册表结构的工作原理,则可以通过注册表轻松更改 NIC 的名称。

您需要 NetworkAdapters GUID 才能找到要打开的路径。要获取网络适配器 GUID,我建议首先查询 WMI“Win32_NetworkAdapter”类。有一个 GUID 属性以及识别特定适配器所需的所有其他属性。

您会在注册表路径中注意到此 GUID:{4D36E972-E325-11CE-BFC1-08002BE10318}
访问链接了解相关信息: http://technet.microsoft.com/en-us/library/cc780532(v=ws.10).aspx

string fRegistryKey = string.Format(@"SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{0}\Connection", NIC_GUID);

RegistryKey RegistryKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, @"\\" + Server.Name);

RegistryKey = RegistryKey.OpenSubKey(fRegistryKey, true); //true is for WriteAble.

RegistryKey.SetValue("Name", "<DesiredAdapterName>");

Windows UI 的设计不允许重复的 NIC 名称。但是,您可以通过注册表强制使用重复的 NIC 名称。我们已经做过测试,似乎没有什么因重名而受到严重影响。 Windows 似乎仍然运行良好。如果您不合并反重复名称逻辑,您只是想对针对 NIC 名称编写脚本保持警惕。

要创建唯一性,您可以使用与 WMI 查询关联的适配器索引属性。

关于c# - 如何在 C# 中更改 NetworkAdapter 的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com