|
|
发表于 2010-8-6 10:25:23
|
显示全部楼层
这个内存盘是做什么用的?如果是存放系统的临时文件和IE的临时文件那么是越早加载越好,imdisk驱动服务有一个参数可以在启动imdisk服务时就加载预先做好的镜像入内存作为内存盘的。
首先将启动imdisk驱动的键值改为1,以便imdisk驱动在系统启动是加载。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ImDisk]
"Start"=dword:00000001
然后导入以下注册表:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ImDisk\Parameters]
"DriveLetter0"="Z"
"FileName0"="\\??\\C:\\windows\\imdisk.IMG"
"Flags0"=dword:00000200
"LoadDevices"=dword:00000001
其中DriveLetter0代表创建加载第一个镜像的内存盘,如果你还需要加载第二个镜像,那么再增加一个键值DriveLetter1,以此类推;“Z”代表内存盘的盘符,可自由修改,只要不与系统已有的盘符冲突就行了,"FileName0"="\\??\\C:\\windows\\imdisk.IMG"代表加载镜像的路径,如果还要加载第二个,则再增加一个键值"FileName1",以此类推;"Flags0"=dword:00000200这个标志值表示将镜像复制到内存再挂载(如果仅仅是想加载镜像文件而并不是复制整个镜像到内存盘则这个键值不用写),这就是解决你问题的关键所在了。因为imdisk没有能力在加载驱动的时候就创建内存盘并格式化,但可以在加载驱动时加载已存在的镜像,因此要想在加载imdisk驱动时就产生内存盘只有通过加载预先存在的镜像到内存这种方法(这个可不是我创的,是imdisk的作者自己说的)。为了减少加载镜像的时间可先加载一个体积较小的镜像,最小小到4兆,然后再在系统的自启动键值加一个扩容内存盘的命令将内存盘增加到你所需的容量就可以了。
为了可以动态增加内存盘容量,预先加载的IMG镜像必须要事先格式化为ntfs格式,为了让系统启动时马上有临时文件夹可用,必须事先在IMG镜像建立temp文件夹。如果XP系统启动后在我的电脑看不到这个内存盘(但在命令行和imdisk控制面板是可以看到的,2003一般也可看到),可增加以下键值:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"Z:"="\\Device\\ImDisk0"
"Z:"代表加载镜像的盘符,"\\Device\\ImDisk0"代表加载镜像的序号,如果是第一个加载的镜像,则是ImDisk0,第二个则是ImDisk1,以此类推。
PS:如果你用的是2003,可直接用组策略的开机脚本(组策略-》“本地计算机”策略-》计算机配置-》windows设置-》脚本(启动/关机)—》“启动”)来加载创建imdisk内存盘的批处理,例如
@echo off
imdisk -a -s 200M -m z: -p "/fs:ntfs /y /q"
md z:\temp
用这种方法创建的内存盘足以赶得上系统使用临时文件的需要,但奇怪的是XP的组策略的开机脚本加载比2003慢很多,不能赶在系统需要用临时文件之前创建内存盘。
当然如果你是简单地只是想在启动时加载内存盘,则在系统注册表的自启动项调用上述批处理就行了,例如在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 项。
[ 本帖最后由 yjstone 于 2010-8-6 17:39 编辑 ] |
|