一、批处理

除了将 VHD 文件用人工方式在【磁盘管理】里【附加】来挂载以外,也能用【脚本】来实现自动挂载。

打开【启动】,将写好的 mount.bat 放入即可:

Mount.bat 文件的内容为:

diskpart /s e:\mount.txt

mount.txt 文件的内容为:

select vdisk file=d:\Program.vhd

attach vdisk

select vdisk file=d:\Game.vhd

attach vdisk

select vdisk file=d:\Documents.vhd

attach vdisk

select vdisk file=d:\Temp.vhd

attach vdisk

select vdisk file=d:\Workspace.vhd

attach vdisk

exit

这种方式固然简单,但是每次开机弹出的命令行以及用户帐户控制许可,都太令人伤神了,必须消灭这些视觉垃圾!

二、计划任务

于是很自然地就想到了 Windows 计划任务——也许能无声无息的把事儿给办了吧……

在上面的【批处理】的基础上,配置【计划任务】step by step 如下图:

重启后,恼人的命令行和用户账户控制提示没有了,虚拟盘如同葫芦娃似地,一个一个嘎嘣嘎嘣的跳出来,真是令人激动啊!

三、Windows 系统服务

虽然以【计划任务】的方式来挂载 VHD 已经相当方便了,但是也许并不是那么快捷——因为计划任务是通过一个叫做 【Task Scheduler】 的【系统服务】来调度运行的,一般只有用户级别的执行优先级,而倘若能跨过【Task Scheduler】从计划任务升级为 【系统服务】 来执行,那么效率和优先级都会好很多!

可是自 Win7 以后,微软对能够作为【系统服务】运行的程序进行了更严格的规定,以致于用户不能再那么轻易地将自己定制的程序作为系统服务来运行。就算可以通过 SC 命令安装服务,一般也启动不了。会报诸如:

的错误。

然而,这并不能阻止我——现在,我需要的只是一个【系统服务的壳子】。幸运的是,这种外壳在Microsoft Windows Resource Kits工具集中被找到,有两个小文件 instsrv.exe 和 srvany.exe,其中前者是装入器,后者则是我们的【壳子】!

以管理员打开 CMD,进入instsrv.exe 和 srvany.exe的目录,假设这两个文件在E:\,键入instsrv.exe mountvdisk e:\srvany.exe 命令以装载服务。

其中 instsrv.exe 的参数有两个,mountVdisk 是我们自己的定制服务的名字——就是要把它装进后面的参数,也就是 srvany.exe(壳子)里,不过注意,要给出 srvany.exe 的完整路径。

执行完以上的命令,再打开注册表编辑器,会看到 mountVdisk 服务已装好:

在注册表的路径为:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mountVdisk]

不过此时,mountVdisk 还仅仅只是与 Windows 系统通过【壳子】连接好了,还没有任何功能,仍须我们进一步编辑它,如下图:

由上图导出的注册表为:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mountVdisk\Parameters]

"Application"="diskpart"

"AppParameters"="/s e:\\mount.txt"

"AppDirectory"="c:\\windows\\system32\\"

将以上保存为 mountVdisk.reg ,再根据各自的实际情况修改路径与参数后导入的过程,也就是安装服务的过程了!

最后,关闭注册表编辑器,回到命令行下,测试一下服务 mountVdisk:

命令行回显成功的同时也听见系统发出"咚咚",虚拟磁盘成功挂载的声音。

重启后,服务随系统一同启动,VHD挂载成功!

最后值得一提的是,若我们的虚拟磁盘数目很多,那么把这些 VHD 都用一个 mount.txt 来管理,就会有比较大的挂载效率问题——你会看到它们是按照 mount.txt 文件中记录的顺序来挨个儿挂载的,是一种串行的工作方式;而当我们把 mount.txt 文件拆分一下,用多个服务来并行挂载,则效率会好很多!

不过一定要注意拆分的度,串行更利于管理,并行更利于效率,合理的拆分,才能有最好的效果!

开机自动挂载 VHD 的方法的更多相关文章

  1. (原)ubuntu挂载及开机自动挂载网络端的文件夹的方法

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7160792.html 参考网址: http://blog.csdn.net/tlight/articl ...

  2. Linux系统磁盘分区、删除分区、格式化、挂载、卸载、开机自动挂载的方法总结

    Linux系统按照MBR(Master Boot Record)传统分区模式: 注意:传统的MBR(Master Boot Record)分区方式最大只能分2T容量的硬盘,超过2T的硬盘一般采用GPT ...

  3. Linux开机自动挂载Windows分区

    使用Linux的朋友肯定都不会对本文所谈的内容陌生,在Linux系统里,通常不会开机自动挂载Windows文件系统下的分区.Ubuntu系统下要点击Windows分区才会挂载,Fedora下则甚至要输 ...

  4. Linux基础知识之挂载详解(mount,umount及开机自动挂载)

    Linux基础知识之挂载详解(mount,umount及开机自动挂载) 转载自:http://www.linuxidc.com/Linux/2016-08/134666.htm 挂载概念简述: 根文件 ...

  5. linux挂载新磁盘、分区和开机自动挂载

    今天在阿里云虚拟主机里新加了一块磁盘,需要单独挂载到centos7. 挂载过程中遇到了不少问题,记录如下: 查看分区 fdisk -l 其中第一个框和第二个框,是已经分好区的磁盘,第三个硬盘没有分区. ...

  6. Ubuntu12.04开机自动挂载windows分区

    最近使用Ubuntu12.04时不知到怎么搞的原本能自动识别的Windows的C .D .E盘突然间无法识别了,于是上网搜了一下Ubuntu12.04下自动挂载Windows NTFS分区的方法. 还 ...

  7. Ubuntu 开机自动挂载磁盘

    Ubuntu 磁盘挂载 1.使用命令查看分区 sudo fdisk -l 1 可以根据上图提供的磁盘信息确定想挂载的磁盘,以及确定挂载的位置. 我此次的目的是将/dev/sda2 磁盘挂载到/mnt/ ...

  8. Linux挂载(mount,umount及开机自动挂载

    挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载” 1.挂载:根 ...

  9. 在Linux上挂载Windows共享文件夹,如何开机自动挂载(mount)?

    按照一般的思路,我们先将文件夹挂载上去,命令如下: mkdir /mnt/share_software mount //192.9.206.43/share_software /mnt/share_s ...

随机推荐

  1. VS2012下基于Glut OpenGL glScissor示例程序:

    剪裁测试用于限制绘制区域.我们可以指定一个矩形的剪裁窗口,当启用剪裁测试后,只有在这个窗口之内的像素才能被绘制,其它像素则会被丢弃.换句话说,无论怎么绘制,剪裁窗口以外的像素将不会被修改.有的朋友可能 ...

  2. 开发一个微信小程序教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...

  3. java多线程并发编程与CPU时钟分配小议

    我们先来研究下JAVA的多线程的并发编程和CPU时钟振荡的关系吧 老规矩,先科普 我们的操作系统在DOS以前都是单任务的 什么是单任务呢?就是一次只能做一件事 你复制文件的时候,就不能重命名了 那么现 ...

  4. Fragment与Activity交互(使用Bundle)

    将需要传输的数据封装在一个Bundle对象里,然后将该Bundle对象通过 fragment.setArguments()放到fragment内. Bundle arguments = new Bun ...

  5. 深入理解Java Proxy机制(转)

    动态代理其实就是java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有你指定的接口(您在参数中传入的接口数组 ...

  6. 浅析CDN存在的必要性

    CDN行业从出现至今,已经有近20年的历史.但是直到近些年互联网进入超高速发展阶段,CDN才得以得到更广泛的应用和发展.最开始,CDN的主要任务只是简单的内容分发,对于静态内容的加速没有问题.但是随着 ...

  7. 【C#】【SHARE】The registering of global hotkeys

    I remember that when I was still using VB6 sereval years ago, if global hotkeys are required, a mass ...

  8. 《CLR Via C#》读书笔记,持续更新...

    写了快5年代码了,一直都是使用别人发明的语言,别人发明的框架做快速开发,还从来没有真正深刻的学习过底层的一些东西,于是今年我打算读<CLR Via C#>这本书,认识一下C#的底层,我觉得 ...

  9. Array类型方法总结(未写完)

    转换方法:  toString() toLocaleString() valueOf() 栈方法:   push()---在数组末尾添加项,返回修改后的长度,   pop()---在数组末尾移除项,返 ...

  10. html5 canvas的教程

    原文地址:http://www.cnblogs.com/tim-li/archive/2012/08/06/2580252.html 原作很强悍 导航 前言 基本知识 绘制矩形 清除矩形区域 圆弧 路 ...