开机自动挂载 VHD 的方法
一、批处理
除了将 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 的方法的更多相关文章
- (原)ubuntu挂载及开机自动挂载网络端的文件夹的方法
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7160792.html 参考网址: http://blog.csdn.net/tlight/articl ...
- Linux系统磁盘分区、删除分区、格式化、挂载、卸载、开机自动挂载的方法总结
Linux系统按照MBR(Master Boot Record)传统分区模式: 注意:传统的MBR(Master Boot Record)分区方式最大只能分2T容量的硬盘,超过2T的硬盘一般采用GPT ...
- Linux开机自动挂载Windows分区
使用Linux的朋友肯定都不会对本文所谈的内容陌生,在Linux系统里,通常不会开机自动挂载Windows文件系统下的分区.Ubuntu系统下要点击Windows分区才会挂载,Fedora下则甚至要输 ...
- Linux基础知识之挂载详解(mount,umount及开机自动挂载)
Linux基础知识之挂载详解(mount,umount及开机自动挂载) 转载自:http://www.linuxidc.com/Linux/2016-08/134666.htm 挂载概念简述: 根文件 ...
- linux挂载新磁盘、分区和开机自动挂载
今天在阿里云虚拟主机里新加了一块磁盘,需要单独挂载到centos7. 挂载过程中遇到了不少问题,记录如下: 查看分区 fdisk -l 其中第一个框和第二个框,是已经分好区的磁盘,第三个硬盘没有分区. ...
- Ubuntu12.04开机自动挂载windows分区
最近使用Ubuntu12.04时不知到怎么搞的原本能自动识别的Windows的C .D .E盘突然间无法识别了,于是上网搜了一下Ubuntu12.04下自动挂载Windows NTFS分区的方法. 还 ...
- Ubuntu 开机自动挂载磁盘
Ubuntu 磁盘挂载 1.使用命令查看分区 sudo fdisk -l 1 可以根据上图提供的磁盘信息确定想挂载的磁盘,以及确定挂载的位置. 我此次的目的是将/dev/sda2 磁盘挂载到/mnt/ ...
- Linux挂载(mount,umount及开机自动挂载
挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载” 1.挂载:根 ...
- 在Linux上挂载Windows共享文件夹,如何开机自动挂载(mount)?
按照一般的思路,我们先将文件夹挂载上去,命令如下: mkdir /mnt/share_software mount //192.9.206.43/share_software /mnt/share_s ...
随机推荐
- 安装javajava整合Flex
PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 这几天在学一个叫Flex的东西,之前也没搞过这一类的东西认为既神秘又生疏,随 ...
- 你的MongoDB Redis设置用户名密码了吗?看看shodan这款邪恶的搜索引擎吧!~
早上看新闻的时候看到了个醒目的新闻 开源中国:MongoDB 赎金事件持续发酵,究竟是谁之过? 博客园:MongoDB数据库勒索,中国受害者数量超乎你的想象,SOS! 1. 由于自己之前做过的项目,R ...
- ROC与AUC
一.ROC曲线 1.ROC曲线:接收者操作特征(receiveroperating characteristic),ROC曲线上每个点反映着对同一信号刺激的感受性. 横轴:负正类率(false pos ...
- [Node.js]REPL(交互式解释器)
摘要 REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的 ...
- 《Hexo+github搭建个人博客》
<Hexo+github搭建个人博客> 文/冯皓林 完稿:2016.4.22-2016.4.23 注意:本节教程只针对Windows用户.本教程由无人赞助,赞助写出. <Hexo+g ...
- TreeView控制消息
控制消息的作用 通过发送消息到Treeview控件, 就能够控机Treeview控件.常用的控制有: 获取被点击的节点 获取节点的文本 设置节点的文本 获取节点的父节点 获取节点的子节点 TVM_GE ...
- 【01背包】HDU 2546 饭卡
Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) ...
- GTK+2.0学习——code::block使用
在之后使用中会慢慢去完善~~ 一.编码设置 1.设置文件编码:setting->editor->如图 2.设置编译时的编码(记住二者要统一):setting->compiler-&g ...
- js学习笔记1
就是调用对象是一个Array,对Array类型增加了一个原型写法的函数,一般写一些扩展时经常用.比如判断一个元素是否在数组中之类的 Array.prototype.inArray=function(v ...
- 利用python3.5 构建流媒体后台音视频切换的服务端程序
#!/usr/bin/env python3.5.0 # -*- coding:utf8 -*- import os,sys,socket,hashlib,time,select,threading, ...