无忧启动论坛

标题: 绿色软件配合上VBS程序真是完美解决方案 [打印本页]

作者: UID    时间: 2006-11-3 16:19
标题: 绿色软件配合上VBS程序真是完美解决方案
我喜欢绿色软件(不必担心系统目录里多了什么LJ,不必担心流氓软件的捆绑,解压完就可以用,不用就把整个目录删了),经常把一些软件搞成绿色的,现在也有了不少绿色软件站,更方便我了

但是绿软件的路径是个一直没解决的问题,一般在README.TXT里都是叫我们直接把REG文件的路径改改再导入注册表,但真的是好烦,于是这两天研究了下VBScript,发现完全可以取代REG文件

但是REG文件完全转成VBS文件还有点难,之前有人写过REG转INF的,但我用过后发现那个还是有BUG(比如[-XXX]它就翻译不过来),所以自己正在写程序来搞定这个问题,相信过几天就可以搞好了,现在重点先解决路径问题

拿NOTEPAD++来举个例子,这是个替代记事本的软件,可以在下面下载

http://green.crsky.com/soft/37.html

然后你可以抄下下面的程序,生成个.VBS的文件,复制到解压后的NOTEPAD++目录里再执行它,以后你把NOTEPAD++搬家了,再执行一遍就好了:

Function GetPath
    '' Retrieve path to the script file
    Dim path
    path = WScript.ScriptFullName  '' Script file name
    GetPath = Left(path, InstrRev(path, "\"))
End Function

Dim WSHShell,HowTo
HowTo = MsgBOX("将要设置TXT文件用以下软件打开"&Chr(13)&GetPath()&"NotePAD++.EXE",vbOKCancel)
IF HowTo = vbOK Then
  Set WSHShell = WScript.CreateObject("WScript.Shell")
  WSHShell.RegWrite "HKLM\SOFTWARE\Classes\txtfile\shell\open\command\",GetPath()&"NotePAD++.EXE %1","REG_SZ"
Else
  HowTo = MsgBOX("是否还原TXT文件的打开方式为系统默认的记事本?",vbOKCancel)
  If HowTo = vbOK Then
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    WSHShell.RegWrite "HKLM\SOFTWARE\Classes\txtfile\shell\open\command\","NotePAD.EXE %1","REG_SZ"
  End If
End If
Set WSHShell = Nothing
WScript.echo "Done!"
WScript.Quit  '' Terminate script.

本贴由福州子夜狂风原创,转载或用于商业目的请保留本贴完整
作者: lxl1638    时间: 2006-11-3 19:06
绿色软件的路径注册完全可以通过CMD命令解决,楼主的也是一种方法,但不同的程序注册信息也不同,这种通过VBS注册的方式在一些系统不能用(如红叶PE,因为它支持VBS),以楼主对VBS的理解,可以将下面的内容保存为一个CMD文件(名称随便),放到任意目录执行看看两个环境变量(CMDCommandLine、ThisPath)是什么,你会发现CMDCommandLine是CMD文件本身,ThisPath是这个CMD所在的目录,相当于你 VBS中的GetPath()函数。


  1. Set CMDCommandLine=%0
  2. FOR /F "delims=" %%I in ("%CMDCommandLine%") do Set ThisPath=%%~dpI
  3. Set CMDCommandLine
  4. Set ThisPath
  5. Pause > nul
复制代码

作者: strongchen    时间: 2006-11-3 20:11
正常windows用inf可以做的很漂亮(完全解决路径问题),在pe中还是喜欢用reg.exe(配合%cd%参数也可以解决路径问题)。

[ 本帖最后由 strongchen 于 2006-11-3 08:12 PM 编辑 ]
作者: 老毛桃    时间: 2006-11-3 20:24
原帖由 strongchen 于 2006-11-3 20:11 发表
正常windows用inf可以做的很漂亮(完全解决路径问题),在pe中还是喜欢用reg.exe(配合%cd%参数也可以解决路径问题)。

如果在别的路经通过输入路径\批处理文件名的方式来运行批,%CD% 得到的值就不准确。而老九说到的那个却是可行的
作者: lxl1638    时间: 2006-11-3 20:34
原帖由 strongchen 于 2006-11-3 08:11 PM 发表
正常windows用inf可以做的很漂亮(完全解决路径问题),在pe中还是喜欢用reg.exe(配合%cd%参数也可以解决路径问题)。


%CD%是指当前路径,比如你在C:\Path1\下执行F:\Path2\XXX.CMD,则%CD%是C:\Path1\
作者: strongchen    时间: 2006-11-3 20:47
老九这段代码收藏了 ^_^

dos命令还是很菜。。。
作者: 老毛桃    时间: 2006-11-3 20:52
原帖由 strongchen 于 2006-11-3 20:47 发表
老九这段代码收藏了 ^_^

dos命令还是很菜。。。

在批处理方面,老九可是高手啊!
作者: lxl1638    时间: 2006-11-3 21:03
原帖由 老毛桃 于 2006-11-3 08:52 PM 发表

在批处理方面,老九可是高手啊!


晕死,我那些三脚猫的功夫还是学你的,只是太长时间没弄DOS(批处理)了,想当年对DOS的研究还是有收获的,尤其是 Int13的扩展功能在NetWare服务器上的应用曾令我着迷。
作者: 老毛桃    时间: 2006-11-3 21:08
原帖由 lxl1638 于 2006-11-3 21:03 发表
尤其是 Int13的扩展功能在NetWare服务器上的应用曾令我着迷。

偶好像是在看一部天书。。。。。:lol:lol:lol
作者: namejm    时间: 2006-11-3 22:14
  嘿嘿,看到各位高手都在讨论,我也来掺和一下。获取路径用CMD来处理是再合适不过了,它可以取到文件名、扩展名,还可以获取某一路径中任意层次上的文件夹名。
作者: feng8103    时间: 2006-11-4 00:51
我不是很喜欢这种绿色软件,我认为绿色的就是不写入注册表 不写入系统文件 独立就可运行的软件 那才是绿色
作者: szlxy58    时间: 2006-11-4 10:17
原帖由 feng8103 于 2006-11-4 12:51 AM 发表
我不是很喜欢这种绿色软件,我认为绿色的就是不写入注册表 不写入系统文件 独立就可运行的软件 那才是绿色

  
持相同意见。
作者: 紫狐    时间: 2006-11-4 12:46
使用cmd有一个问题就是不能支持9x。
作者: lxl1638    时间: 2006-11-4 13:15
原帖由 szlxy58 于 2006-11-4 10:17 AM 发表

  
持相同意见。


绝对不写注册表的程序是极少极少的,程序本身不写,Windows也会写,系统会把它的运行记录写入注册表。一些程序写注册表是必要的,要看它写入什么内容,比如程序本身的窗口大小、窗口位置、程序本身一些配置(如记事本的字体设置)和它所打开过的文件记录等,这些内容写入注册表无所谓,若这些内容都不记录的话,这样的程序(工具)功能也不完善,用起来也不方便(比如某些工具是多语言的,默认是英语,当你设置成中文时,它会记录在注册表,否则下次启动又是英语)。最怕是它写入服务、驱动、插件、启动项等。
作者: zszlx95    时间: 2006-11-4 15:17
支持lxl1638 的观点。
作者: being    时间: 2006-11-10 14:49
很好的解决方法,谢谢分享
作者: wanghh    时间: 2006-11-10 17:02
支持lxl1638 的观点。
作者: arqiang    时间: 2006-11-11 00:13
拿来研究研究
作者: strongchen    时间: 2006-11-11 01:15
不知道老毛桃能否把那段cmd改成在dos环境也可以使用?
作者: kkfyjh    时间: 2006-11-11 08:28
学习中...
作者: 老毛桃    时间: 2006-11-11 09:38
原帖由 strongchen 于 2006-11-11 01:15 发表
不知道老毛桃能否把那段cmd改成在dos环境也可以使用?

要看了,COMMAND.COM 与 CMD.EXE 的命令解释方式有点区别,一般 DOS 下的批处理在 CMD 中运行问题不大,反之可能会有些问题




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3