中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: Reg2VBS→vbs版 上一主题 | 下一主题
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 16 楼』:  

ThisText1 = Replace(ReadAllText,vbCr,Chr(28))
ThisText1 = Replace(ThisText1,vbLf,Chr(29))
ThisText1 = Replace(ThisText1,Chr(34),Chr(18))


这样就不用循环……我是这个意思……

zhoushijay的你再看看……他说的原理是真正的reg2vbs……
将reg所表达的信息用vbs中的regwrite等方法实现。

2007-6-1 16:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 17 楼』:  

论坛插件的话要网页里的脚本……我是用VB写的……

2007-6-1 16:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 18 楼』:  



  Quote:
Originally posted by slore at 2007-6-1 16:47:
ThisText1 = Replace(ReadAllText,vbCr,Chr(28) ...

明白了,最初是要加密reg的,删掉了加密那句,所以结构还保留了原for

另外你说的真reg2vbs,受人之托后首先想到的就是用VBS自身的方法,但你应该知道,VBS自身那方法局限性太大并不能完全实现reg文件的作用,甚至wmi也考虑了,最后还是选择了文件转换,虽然笨拙,但是最有效且不易出错的。



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-6-1 16:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 19 楼』:  

是有局限性,所以我就叫它保留reg,用vbs调用regedit /s就好……

2007-6-1 17:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 20 楼』:  



  Quote:
Originally posted by slore at 2007-6-1 17:01:
是有局限性,所以我就叫它保留reg,用vbs调用regedit /s就好……

呵呵 我也是这么和他说的,可他说讨厌带着一堆reg,他只喜欢vbs。

另外问兄,是否知道如何判断文件编码方式,(ansi和unicode)如此例。

不想使用流,所以必然涉及编码方式,此例中用了取巧的方法,兄是否可有方法判断。



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-6-1 17:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 21 楼』:  

unicode的话2进制读取的前2个是FFFE(255 254)

VB里我是
Open strFileName For Binary As #iReadNumber
    Get #iReadNumber, 1, Ucodehead
    Get #iReadNumber, 3, mem
Close #iReadNumber
If Ucodehead(0) = 255 And Ucodehead(1) = 254 Then OutStr = CStr(mem) Else OutStr = StrConv(mem, vbUnicode)

脚本没研究过……

2007-6-1 17:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 22 楼』:  

判断文件头的方法我也查到了,好像找不到脚本的。



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-6-1 17:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 23 楼』:  

脚本的opentextfile使用u模式读取文件。

A模式读U的文本会出错,不知道用u模式读A的文件会怎么样。。。

2007-6-1 17:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by slore at 2007-6-1 17:25:
脚本的opentextfile使用u模式读取文件。

A模式读U的文本会出错,不知道用u模式读A的文件会怎么样。。。

试过 乱码



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-6-1 17:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wert123
中级用户





积分 301
发帖 135
注册 2007-5-15
状态 离线
『第 25 楼』:  

不行啊,运行老有错误啊,改了半天,在右键菜单转注册表转不了啊
slore大师啊,你贴掉了一些东西吧
麻烦再贴一遍吧

2007-6-2 10:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 26 楼』:  

我贴出的那个你双击后复制到system32下就可以了。

2007-6-2 11:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chishingchan
银牌会员




积分 1282
发帖 538
注册 2002-11-2
状态 离线
『第 27 楼』:  

9 楼的代码还不是很完善,右击注册表文件时点击出错。

2008-6-23 19:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 28 楼』:  

'*****************************************************************************
' FileName:            Reg2Vbs.VBS
'   Author:            baomaboy
' Abstract:            将Reg文件转换为VBS文件保存
'*****************************************************************************
Dim WshShell,FSO
On Error Resume Next
Set WshSHell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Args = WScript.Arguments
CloseTime = 5
FileName = WScript.ScriptName
FileFullName = WScript.ScriptFullName
FilePath = FSO.GetParentFolderName(FileFullName)
InsPath = FSO.GetSpecialFolder(1)
InsFullName = FSO.BuildPath(InsPath ,FileName)
Copyright="玲珑科技"
QQ="QQ:25926183"
Email="Email:25926183@qq.com"
InsTitle="Reg2Vbs-Txt"
InsAnswer="Reg2Vbs-Txt"
RegPath1="HKEY_CLASSES_ROOT\regfile\shell\RegToVbs\"
RegValue1="REG转VBS脚本文件"
RegForm1="REG_SZ"
RegPath2="HKEY_CLASSES_ROOT\regfile\shell\RegToVbs\command\"
RegValue2="wscript.exe """& InsFullName &""" ""%L"""
RegForm2="REG_SZ"
IF FileFullName <> InsFullName then
intAnswer = MsgBox("【是】将“"+ InsAnswer +"”加入到右键菜单,"&Chr(10)&Chr(10)&"【否】将“"+ InsAnswer +"”从右键菜单删除。 ", vbQuestion + vbYesNoCancel, "安装 - "+ InsTitle +" - by baomaboy")
    If intAnswer = vbYes Then
WshSHell.RegWrite RegPath1,RegValue1,RegForm1
WshSHell.RegWrite RegPath2,RegValue2,RegForm2
FSO.GetFile(FileFullName).Copy(InsFullName)
WshSHell.popup _
"添加脚本文件:"+chr(10)+InsFullName+chr(10)+chr(10)+ _
"添加注册表项:"+chr(10)+chr(34)+ RegPath1 +chr(34)+chr(10)+ _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C)  " + Copyright +"   " & QQ &"   " + Email _
, CloseTime, "安装成功 - "+ InsTitle +" - by baomaboy", 0 + 64
end if
        If intAnswer = vbNo Then
WshSHell.RegDelete RegPath2
WshSHell.RegDelete RegPath1
FSO.DeleteFile InsFullName
WshSHell.popup _
"删除脚本文件:"+chr(10)+InsFullName+chr(10)+chr(10)+ _
"删除注册表项:"+chr(10)+chr(34)+ RegPath1 +chr(34)+chr(10)+ _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C)  " + Copyright +"   " & QQ &"   " + Email _
, CloseTime, "卸载成功 - "+ InsTitle +" - by baomaboy", 0 + 64
end if
        If intAnswer = vbCancel Then
end if
ELSE
if Args.count=0 then wscript.quit
Set ReadFile = FSO.OpenTextFile(Args(0), 1,false,-1)
ReadAllText = ReadFile.ReadAll
ReadFile.Close
if mid(ReadAllText,1,3) <> "Win" and mid(ReadAllText,1,3) <> "REG" then
Set ReadFile = FSO.OpenTextFile(Args(0), 1)
ReadAllText = ReadFile.ReadAll
ReadFile.Close
end if
For i=1 To Len(ReadAllText)
TempNum = Asc(Mid(ReadAllText,i,1))
if TempNum = 34 Then
TempNum = 18
elseIf TempNum = 13 Then
TempNum = 28
ElseIf TempNum = 10 Then
TempNum = 29
end if
ThisText1 = ThisText1 & chr(TempNum)
Next
Set WriteFile = FSO.OpenTextFile(Args(0)&".VBS",2,True)
WriteFile.WriteLine("On Error Resume Next : Dim WshSHell,FSO,Reg2Vbs:Set WshSHell = WScript.CreateObject(""WScript.Shell""):Set FSO = CreateObject(""Scripting.FileSystemObject""):Reg2Vbs="""& ThisText1 &"""")
WriteFile.WriteLine("Execute(""For i=1 To Len(Reg2Vbs)""&vbCrLf&""TempNum = Asc(Mid(Reg2Vbs,i,1))""&vbCrLf&""If TempNum = 28 Then""&vbCrLf&""TempNum = 13""&vbCrLf&""ElseIf TempNum = 29 Then""&vbCrLf&""TempNum = 10""&vbCrLf&""elseif TempNum=18 Then""&vbCrLf&""TempNum = 34""&vbCrLf&""End If""&vbCrLf&""ThisText2 = ThisText2 & chr(TempNum)""&vbCrLf&""Next"")")
WriteFile.WriteLine("Set RegFile = FSO.OpenTextFile(FSO.BuildPath(FSO.GetSpecialFolder(2),""Temp.reg""),2,True):RegFile.WriteLine(ThisText2):RegFile.Close:WshSHell.Run(""regedit /s ""&FSO.BuildPath(FSO.GetSpecialFolder(2),""Temp.reg"")):WScript.Sleep 500:FSO.DeleteFile FSO.BuildPath(FSO.GetSpecialFolder(2),""Temp.reg"")")
WriteFile.Close
end if
Set WshSHell = Nothing
Set FSO = Nothing
Set Args = Nothing
WScript.Quit(0)



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2008-6-24 07:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: