我通过以下代码创建了一个虚拟WiFi热点,我现在需要获取其IP地址,但实际上我不知道其网络接口的名称(因为没有常量名称,"本地连接*16"也许(。
目标是知道其 IP 地址,因此设置托管网络的 IP 应该是解决方案之一......但最好不涉及手工工作。
这个问题真的卡住了我...请帮忙;(
private void Hotspot(string ssid, string key,bool status)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
if (process != null)
{
if (status)
{
process.StandardInput.WriteLine ("");
process.StandardInput.WriteLine("netsh wlan set hostednetwork mode=allow ssid=" + ssid + " key=" + key);
print ("cmd: "+"netsh wlan set hostednetwork mode=allow ssid=" + ssid + " key=" + key);
process.StandardInput.WriteLine("netsh wlan start hostednetwork");
print ("cmd: " + "netsh wlan start hostednetwork");
process.StandardInput.Close();
}
else
{
process.StandardInput.WriteLine ("");
process.StandardInput.WriteLine("netsh wlan stop hostednetwork");
print ("cmd: " + "netsh wlan stop hostednetwork");
process.StandardInput.Close();
}
}
}
此解决方案涉及一个假设:使用命令netsh wlan
的虚拟热点地址将引用SYSTEMCurrentControlSetServicesWlanSvcParametersEapolKeyIpAddress
中LocalAddress
的注册表项。
然而,我不会把它标记为答案,因为它有不确定性。欢迎讨论或评论。
private string GetVirtualHotspotIPAddress () {
using (RegistryKey wlanKey = Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Services\WlanSvc\Parameters\EapolKeyIpAddress")) {
if (wlanKey != null) {
object keyValue = wlanKey.GetValue ("LocalAddress");
if (keyValue != null) {
return keyValue.ToString ();
} else {
UnityEngine.Debug.LogError ("KEY 'LocalAddress' NOT FOUND");
return null;
}
} else {
UnityEngine.Debug.LogError ("No WLANSVC KEY FOUND");
return null;
}
}
}