Board logo

标题: [文件操作] 【一键挂载VHD】批处理脚本求改 [打印本页]

作者: mybillmail    时间: 2018-9-25 11:51     标题: 【一键挂载VHD】批处理脚本求改

我参与别人的实例写了一个一键加载VHD的脚本,双击后就会加载U盘中的VHD,测试功能 无异常
  1. @echo off
  2. set curdir=%~dp0
  3. echo select vdisk file="%curdir%U.vhd" >vhdsel
  4. echo attach vdisk >>vhdsel
  5. echo list disk >>vhdsel
  6. diskpart /s vhdsel
  7. del /f /q vhdsel
  8. exit
复制代码
但是我希望加载VHD的时候,是只读属性加载,怎么修改。另外我还希望能指定 盘符,比如指定 为O盘
作者: flashercs    时间: 2018-9-25 12:12

本帖最后由 flashercs 于 2018-9-25 12:24 编辑

1.可以用readonly属性
  1. ATTACH VDISK READONLY
复制代码
2.可以修改Security Descriptor 安全属性标识符,读写删除等所有NT权限可自由设置,要懂SDDL标识符。
  1. ATTACH VDISK SD=D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CR;;;AU)
复制代码
3.可以修改vdisk文件的安全属性,然后让虚拟盘继承vdisk文件的权限。
  1. ATTACH VDISK USEFILESD
复制代码
随便选择一种方法即可。不过U盘文件系统一般是fat32或exFat,故方法3应是无效的。
分配盘符
  1. ASSIGN LETTER=O
复制代码

作者: mybillmail    时间: 2018-9-25 15:25

回复 2# flashercs

@echo off
set curdir=%~dp0

echo select vdisk file="%curdir%U.vhd" >vhdsel
echo attach vdisk readonly  >>vhdsel
echo list disk >>vhdsel
diskpart /s vhdsel
del /f /q vhdsel
exit

多谢,以上是修改后的脚本,测试可以实现只读加载。分配盘符应该怎么加入代码里。
思路应该是要先选中分区吧,然后把分区用assign letter=O进行修改。
然而用户环境是未知的,所以不好判断加载后的VHD虚拟盘为什么编号的硬盘,这是个难点。已知的只有这VHD只有一个分区。这个感觉非常难处理,希望能指明一个思路
作者: flashercs    时间: 2018-9-25 17:38

回复 3# mybillmail
  1. @echo off
  2. set curdir=%~dp0
  3. echo select vdisk file="%curdir%U.vhd" >vhdsel
  4. echo attach vdisk readonly  >>vhdsel
  5. echo select partition 1 >>vhdsel
  6. echo assign letter=o >>vhdsel
  7. diskpart /s vhdsel
  8. del /f /q vhdsel
  9. exit /b
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2