【发布时间】:2017-03-03 05:23:56
【问题描述】:
我试图欺骗执行我的程序的计算机的 MAC 地址。现在我正在通过 cmd 使用“getmac”命令获取机器的当前 MAC 地址,然后我想通过“RegistryKey”类(windows.system32)更改它。
问题是我不知道要传递给OpenSubKey 方法的字符串。
例如,这是通过读取注册表项来读取当前 MAC 的方法:
private string readMAC()
{
RegistryKey rkey;
string MAC;
rkey = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\0012", true); //--->this is the string to change
MAC = (string)rkey.GetValue("NetworkAddress");
rkey.Close();
return MAC;
}
【问题讨论】:
-
可以更改MAC地址吗?我认为这是由您运行的硬件决定的。
-
@RobertHarvey 大多数驱动程序允许更改 MAC 地址。除其他原因外,因为它们不能保证是唯一的 - 我反复得到具有相同地址的多个 NIC 的 bches(因为从技术上讲,它只能在一个广播域中是唯一的)。
-
实际上现在所有的司机都必须允许。您如何认为 Hyper-V 网络可以附加多个 MAC 地址 ;) 现代高端芯片组在这方面必须非常灵活。
-
您在示例代码中传递给
OpenSubKey的密钥有什么问题? -
没有错,但如果代码在另一台计算机上运行,我必须更改它...
标签: c# mac-address