我的理解如下:

1、用instsrv新添加一个自定义服务名的服务,此服务关联着srvany程序;

2、srvany程序读注册表相应项,找到服务的主应用程序并按照注册表的参数执行它;

3、这个服务可以在services.msc中找到,可以设置开机自动启动。。


注册表文件这样写,写好了双击。(注册表文件后缀是reg)


Windows Registry Editor Version 5.00  

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\服务名\Parameters]   

"Application"="需要运行的程序的绝对路径和参数"  

"AppParameters"="需要运行的程序启动时候的参数"  

"AppDirectory"="需要运行的程序所在目录的绝对路径"


程序绝对路径举例——"C:\\Program Files (x86)\\VMware\\VMware Workstation\\vmware.exe"

启动参数举例——"-X -- D:\\vms\\C6-7.vmx" 

目录绝对路径举例——"C:\\Program Files (x86)\\VMware\\VMware Workstation\\"

注意:我测试了很多次,只写一个 \ 是不行的,要用 \\ 写路径才成。X后面空一个格,两个半角减号后再空一个格,再写虚机配置文件绝对路径。 如果虚机配置文件名中有空格,如“E:\vms\vmware\centos\CentOS 64-bit.vmx”,就需要先双击这个reg文件在注册表中创建出条目,再启动regedit手动把AppParameters的值改成-X -- "E:\vms\vmware\centos\CentOS 64-bit.vmx"  其中英文半角双引号可以把文件名中的空格识别成一个整体。如果开机需要启动多个虚机,只需要在后面再添加多个vmx文件绝对路径即可。举例:将reg文件这行改成"AppParameters"="-X -- D:\\vms\\C6-7.vmx -X -- E:\\vms\\windows10.vmx" 同样的,如果配置文件名中有空格,需要去regedit里手动加上半角双引号否则无效别赖我没告诉你……我花了一个多小时试来试去的。用非administrator账户添加的服务,启动服务后,虚机从虚机控台中消失的问题我也不知道该如何解决。


双击这样一个reg文件以后就导入到注册表中了。接下来是建立服务。用管理员权限打开cmd.exe,键入的命令是:

"instsrv.exe所在绝对路径" 服务名 "srvany.exe所在绝对路径"

举例:"C:\Program Files\Windows Resource Kits\Tools\instsrv.exe" vm_autopoweron "C:\instsrv\srvany.exe" 如此就建立了一个叫vm_autopoweron的服务。

需要完整windows resource kits的,,戳这儿下载

只需要instsrv.exe和srvany.exe的,戳这儿下载


删除服务方法是管理员权限打开cmd键入如下命令:

sc delete 服务名