无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2615|回复: 5
打印 上一主题 下一主题

如何玩转环境变量

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-18 01:15:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我想打造绿色软件Uedit32.exe的时候,想在没打开软件的时候通过双击一个文件就能注册软件的右键菜单,用ATR.EXE软件监视注册表后发现得的结果是如下:
***********************************************************************************
Windows Registry Editor Version 5.00

[HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\*]

[HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\*\shellex]

[HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\*\shellex\ContextMenuHandlers]

[HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\*\shellex\ContextMenuHandlers\UltraEdit]
@="{b5eedee0-c06e-11cf-8c56-444553540000}"


[HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\CLSID\{b5eedee0-c06e-11cf-8c56-444553540000}\InProcServer32]
@="D:\\Program Files\\UltraEdit15.10\\ue32ctmn.dll"
"ThreadingModel"="Apartment"
*************************************************************************************
用reg 转bat 如下:

**************************************************************************************
@ECHO OFF
> "%Temp%.\DefOpen.reg" ECHO Windows Registry Editor Version 5.00
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\*]
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\*\shellex]
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\*\shellex\ContextMenuHandlers]
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\*\shellex\ContextMenuHandlers\UltraEdit]
>>"%Temp%.\DefOpen.reg" ECHO @="{b5eedee0-c06e-11cf-8c56-444553540000}"
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO [HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\CLSID\{b5eedee0-c06e-11cf-8c56-444553540000}\InProcServer32]
>>"%Temp%.\DefOpen.reg" ECHO @="D:\\Program Files\\UltraEdit15.10\\ue32ctmn.dll"
>>"%Temp%.\DefOpen.reg" ECHO "ThreadingModel"="Apartment"
>>"%Temp%.\DefOpen.reg" ECHO.
>>"%Temp%.\DefOpen.reg" ECHO.
START /WAIT REGEDIT "%Temp%.\DefOpen.reg"
DEL "%Temp%.\DefOpen.reg"

***************************************************************************************************
在这其中这个路径用批处来写,而且还要是带变量路径的话该如何来写呢?

[HKEY_USERS\S-1-5-21-790525478-630328440-1801674531-500_Classes\CLSID\{b5eedee0-c06e-11cf-8c56-444553540000}\InProcServer32]
@="D:\\Program Files\\UltraEdit15.10\\ue32ctmn.dll"
现在我的目录是这个位置,这个软件如果做成绿色的话,我不一定放在这个目录,有可能是其它的目录,用 echo "%~dp0ue32ctmn.dll"不能显示双斜路径,请问有没有高手我如何才能做的到用批处来写这个命令呢?
请各位高手指教!!!
5#
 楼主| 发表于 2011-6-19 20:33:20 | 只看该作者

回复 #4 onlyu2000 的帖子

谢谢大师的指点,要是用INF的话不能做成批处理,不能实现自动安装右键菜单,我把绿色小软件做成弹性按钮,与就是说实行点一个快捷键就能启动,再按该快捷键就让它消失,我以前做了个捕图软件SPX的如下:
**************************
@echo off
tasklist |find "spx.exe">NUL 2>NUL
if errorlevel 1 goto norun
if errorlevel 0  goto run
:run
color 4f
echo.
echo.
echo  正在结束程序......
taskkill /f /im spx.exe>NUL 2>NUL
exit
:norun
color 9f
echo.
echo.
echo  正在启动程序......
cd/d  "%~dp0"
start spx.exe >NUL 2>NUL
exit
**************************************
使该程序一键启动再按该键就让它消失,把这个批处理放在SPX.EXE目录,发个快捷方式到开始菜单,并指定一个快捷键就行了
回复

使用道具 举报

4#
发表于 2011-6-18 20:31:21 | 只看该作者
原帖由 onlyu2000 于 2011-6-18 17:50 发表
INF文件中有自己的环境变量和字符变量表示, %01%就是表示该INF文件所在的目录,这比REG有优势,而且可以通过REG2INF得到
其他的如下:

;01 ;current directory
;04 ;backup directory
;10 ;windows dire ...



谢谢讲解!
进来学习!
回复

使用道具 举报

3#
发表于 2011-6-18 17:50:06 | 只看该作者
INF文件中有自己的环境变量和字符变量表示, %01%就是表示该INF文件所在的目录,这比REG有优势,而且可以通过REG2INF得到
其他的如下:

;01 ;current directory
;04 ;backup directory
;10 ;windows directory
;11 ;system dir
;12 ;iosubsys
;13 ;command
;14 ;control panel directory
;15 ;printers directory
;16 ;workgrou dir
;17 ;inf dir
;18 ;help dir
;19 ;administration dir
;20 ;fonts
;21 ;viewers
;22 ;vmm32
;23 ;color dir
;25 ;shared dir
;26 ;winboot
;28 ;host winboot
;30 ;root of boot drive
;31 ;root of host drive of a virtual boot drive
;32 ;old windows dir if exists


用批处理的话可以用变量 %~dp0表示该批处理文件所在的路径.

[ 本帖最后由 onlyu2000 于 2011-6-18 17:52 编辑 ]
回复

使用道具 举报

2#
发表于 2011-6-18 10:58:52 | 只看该作者
这个我用inf文件来解决
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 00:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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