'*****************************************************************************
' 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)