我在几年前的 PC 上升级到 Windows 7。CPU 距离在其上安装 Hyper-V 还差一个版本。因此,我不得不安装 Microsoft Virtual PC 2007 (v6.0.156.0) 来运行完整的 XP 实例,而不是广为宣传的无缝 XP 虚拟化。不过没关系;“旧”版本很有用,因为我用它来运行整个 XP/IE 堆栈的不同版本进行测试。(我是一名 Web 开发人员。) ...对于我们仍在办公室用于调度的一个 16 位应用程序。* 叹息 *
虚拟实例工作正常,包括网络。我的问题是重新启动或退出睡眠模式后,我的主机Windows 7 将无法连接到 Internet。它将很好地连接到本地网络。如果我在 LAN 连接属性框中禁用“虚拟机网络服务”项(我将在此处称为“VMNS”),它就会开始工作。但是,Virtual PC 实例失去了网络连接。如果我在同一个实例中再次启用 VMNS,一切正常(主机上和虚拟化实例中的 Internet)。但在下一次重新启动/睡眠周期之后,这将重新开始。
路由表给了我一个线索。在启用 VMNS 的情况下执行循环时:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 On-link 10.0.3.51 20
0.0.0.0 0.0.0.0 10.0.10.10 10.0.3.51 276
...
禁用 VMNS 后,第一个路由消失。我假设这是为了让 VMNS 拦截虚拟化实例的网络连接并正确转发它们?不过只是猜测。
更多信息:
我检查了我的防火墙设置和服务(因为我是一个控制纳粹并且经常关闭)但找不到任何有意义的东西,如果打开会改变任何东西。所以它可能是我缺少的东西,但我不知道是什么。
我目前的黑客解决方案:
所以,我想我自己会弄乱路线,看看是否有帮助,确实如此。如果我route delete 0.0.0.0
在通用 (0.0.0.0) 网关路由上运行一个,并在第二行加上route add 0.0.0.0 mask 0.0.0.0 10.0.10.10
-- 指向我的实际网关 (10.0.10.10) 的那一行 -- 那么我就不必搞砸了VMNS 的禁用/启用周期,一切正常。
运行这两个命令比打开连接选项并禁用和重新启用 VMNS 更快,但我仍然不想在每次启动时都使用该 hack 脚本。(哦,我还尝试在我的网络适配器中使用硬编码 TCP/IP 设置,包括设置高指标等,但这也无济于事。)
有关解决此问题的正确方法的任何建议?
****我已经使用 gpedit.msc 在本地计算机策略/计算机配置/Windows 设置/脚本(启动/关机)/启动下进行了临时修复。要添加文件,请单击显示文件并在提供的窗口我添加了一个 Startup.cmd 脚本文件,其中包含以下内容
路由删除 0.0.0.0 掩码 0.0.0.0
ipconfig /发布
ipconfig /更新
这消除了启动时的错误路线
我最终只是创建了一个批处理文件并在从 Windows 计划登录时运行它。根据我回到机器时的电源状态,我仍然必须以管理员身份自己运行它。不是我喜欢的解决方案,但它有效。