无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8795|回复: 23
打印 上一主题 下一主题

讨论:让PE自动识别是否在VMware虚拟机环境,判断是否加载VMware拖放剪贴支持

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-25 11:43:39 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
我的这个是笨方法,读取注册表信息判断,朋友们还有什么简单方法没有?

PUSHD %~dp0
for /f "skip=2  tokens=1,3 delims=" %%a in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\Enum /s') do (
    echo %%a>>%temp%\petemp.txt
  )
For /F "tokens=3 delims=^_" %%I In ('Find /I ^"VMware^" %temp%\petemp.txt') DO Set VMwareyn=%%I
del %temp%\petemp.txt
If not "%VMwareyn%"=="" (start %CD%\TOOLS\VMWARE.EXE) else Goto end

:END
EXIT

PS:红色部分是VMware拖放剪贴支持程序的路径。

上面的批处理又是写入%temp%,又是读取又是删除的,,,,哪位高手帮我把他优化一下,谢谢!

__________________________________________________________________________________________________

已改为:

@echo off
PUSHD %~dp0
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\IDE"|find /i /C "VMware">nul && goto vmware
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\SCSI"|find /i /C "VMware">nul && goto vmware
EXIT

:vmware
START TOOLS\VMWARE.EXE
EXIT

[ 本帖最后由 网虫2008 于 2010-3-25 17:11 编辑 ]
2#
 楼主| 发表于 2010-1-25 12:27:39 | 显示全部楼层
原帖由 molingjian 于 2010-1-25 12:13 发表
不知道如果虚拟机没硬盘时,那个键值还存在不?能不能把读出的键值放到变量而不是文件


没有硬盘时也可识别,读取的不光是硬盘信息

我笨的很,写入%temp%方法简单,,,,一会儿试下改成变量,。。。
回复

使用道具 举报

3#
 楼主| 发表于 2010-1-25 13:34:36 | 显示全部楼层
原帖由 pseudo 于 2010-1-25 13:13 发表
“讨论:让PE自动识别是否在VMware虚拟机环境,判断是否加载VMware拖放剪贴支持”

0PE里早就自动判断了

for /f "usebackq tokens=1" %%i in (`reg query "HKLM\SYSTEM\CurrentControlSet\Enum\IDE"^|find ...


收到,这个更简单了,,,,我一年没来,什么都跟不上了
回复

使用道具 举报

4#
 楼主| 发表于 2010-1-25 22:10:07 | 显示全部楼层
现在 7.0 的虚拟机用到scsi了,只查找IDE项有时候查不到了,要加个scsi查找了:

for /f "usebackq tokens=1" %%a in (`reg query "HKLM\SYSTEM\CurrentControlSet\Enum\IDE"^|find /i /C "VMware"`) do if %%a GTR 0 (
TOOLS\VMWARE.EXE
) else (
for /f "usebackq tokens=1" %%a in (`reg query "HKLM\SYSTEM\CurrentControlSet\Enum\SCSI"^|find /i /C "VMware"`) do if %%a GTR 0 TOOLS\VMWARE.EXE
)
回复

使用道具 举报

5#
 楼主| 发表于 2010-1-26 19:07:05 | 显示全部楼层
原帖由 dpxqs 于 2010-1-26 09:51 发表
你的新`PE好久能出来


准备2月14日发布,这阵儿多上上论坛,争取出一个相对较完善的版本,就不用总更新了
回复

使用道具 举报

6#
 楼主| 发表于 2010-3-25 10:20:01 | 显示全部楼层
原帖由 NicTense 于 2010-3-25 01:31 发表


这个写法其实是不对的,乱循环...

而且这里其实没必要用for的,效率太低


@echo off
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\IDE"|find /i /C "VMware">nul && goto vmware
reg query "HK ...


这个方法更快捷了,,

不过,如果 IDE 和 SCSI 如果都有 "VMware",那不是要执行两次了?
回复

使用道具 举报

7#
 楼主| 发表于 2010-3-25 11:56:29 | 显示全部楼层
原帖由 NicTense 于 2010-3-25 10:41 发表


是不是非命令行,如果不用start,原来那个cmd界面的进程就不会自动退出了?



测试过,不加 START 进程可以退出的,这应该主要取决于 .EXE 文件。

比如 极点五笔 就要 REGISTRY.EXE /S
回复

使用道具 举报

8#
 楼主| 发表于 2010-3-25 12:06:14 | 显示全部楼层
原帖由 NicTense 于 2010-3-25 12:02 发表
有没有人提取出 vpc 的剪贴板支持补丁啊,我都不用vmware很多年了


目前还没有,,,那你就提一个呗,,,我和你正相反,我是很多年不用 VPC 了
回复

使用道具 举报

9#
 楼主| 发表于 2010-3-25 12:10:58 | 显示全部楼层
原帖由 alexo 于 2010-3-25 10:23 发表
...靠,这个测试软件在pe里能否正常运行,很有用,搞定了,虫子兄要给一个解决方案pm我知道,嘿嘿,谢谢先!



我从元旦版开始就已经有这个功能了,可能你没注意到吧。
回复

使用道具 举报

10#
 楼主| 发表于 2010-3-25 13:53:42 | 显示全部楼层
原帖由 slore 于 2010-3-25 13:25 发表



批处理调用默认是等待方式。。。

你调用的程序不关闭批处理不继续运行的。

@echo off
notepad.exe
echo test
pause


你不关闭记事本是不会执行下面的。

start是调用后就不管它了,继续执 ...


嗯,,如果单独一个.CMD执行,要根据情况加上 START 参数执行.EXE,

不过,不知道 不加的 START 的等待 与 START /WAIT 有什么区别?

[ 本帖最后由 网虫2008 于 2010-3-25 13:58 编辑 ]
回复

使用道具 举报

11#
 楼主| 发表于 2010-3-25 17:09:20 | 显示全部楼层
原帖由 pseudo 于 2010-3-25 15:46 发表
看大家深入研究、改进,学到不少。

我08年3月发过组件:[PE区首发]VMware拖放剪贴板支持组件

在08年2月的 XP资源080222_Pseudo.rar里,提供过自动识别是否在VMware虚拟机环境的方法:
for /f "usebackq  ...


那P大要是有时间,就再搞个 VPC 虚拟机的拖放剪贴板支持组件吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-12 15:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表