将VirtualPC虚拟机安装为服务–Updated

为什么要将一台Virtual PC虚拟机安装为服务?

这里假设这样一个场景:在Windows XP宿主机上安装Virtual PC,然后在虚拟机里安装Windows Server 2003


(并提升为域控),现在希望宿主机能够登录到虚拟机的域中,怎么办?

这似乎陷入了一个两难境地:要想让宿主机登录到虚拟机的域,就必须在宿主机登录前启动虚拟机;而


要启动虚拟机,就必须先登录到宿主机。

现在只需将虚拟机安装为系统服务,就可以解决这个问题──大家知道服务可以在用户登录前运行,而


在用户注销后还能保持运行。

准备工具

对于Windows XP Pro来说,需要准备以下两个命令工具:

(1)sc.exe:Windows XP自带的命令工具,作用类似于services.msc管理单元,属于服务控制程序(SCP)。

本文我们将借助sc.exe命令工具在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
下为Virtual PC虚拟机添加子项,这样服务控制管理器(SCM)才能控制该虚拟机服务。

(2)srvany.exe:Windows Server 2003 Resource Kit Tools,可以到以下微软官方网站下载:

http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd

由于VPC虚拟机本身不具备和服务控制管理器(SCM)交互的能力,所以必须借助srvany.exe代替和SCM


进行通信。在这里,VPC虚拟机可以看成是srvany进程所启动的一个服务。

操作步骤

为了方便描述,这里假设Virtual PC的安装目录为“C:\Program Files\Microsoft Virtual PC\Virtual PC.exe”,


需要将虚拟机VPC_DC安装为服务,服务名为VPCDC,srvany.exe的路径是“C:\Program Files\Windows Resource Kits\Tools\srvany.exe”。

(1)打开命令提示符窗口。

(2)运行以下命令:

sc create VPCDC type= interact type= own start= auto binpath= “C:\Program Files\


Windows Resource Kits\Tools\srvany.exe” obj= LocalSystem displayname= “VPC DC Service”

注意 双引号用半角字符!

其中的“type= interact”表示该服务在桌面上具有GUI界面,可以接收用户交互,这要求服务的帐户身份必须是LocalSystem(obj= LocalSystem);“type= own”表示可以每个虚拟机服务独享进程

(3)接下来打开注册表编辑器,可以看到在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
下新增了一个VPCDC子项,进入其下的Parameters子项,在右侧的详细窗格里新建一个字符串键值Application,并将其数值数据设置为以下内容:www.xker.com()

“C:\Program Files\Microsoft Virtual PC\Virtual PC.exe” -pc VPC_DC -singlepc -launch

设置完成后,今后每次启动宿主机,都会自动启动虚拟机VPC_DC,这样我们就可以登录到虚拟机的域中了!