Сценарий VBS - нужно изменить msgbox на эхо

Мне трудно преобразовать этот скрипт в эхо вместо вывода msgbox.

Мне нужно вывести, чтобы перейти в текстовый файл в C:\key.log вместо окна сообщения с ключом.

Кто-нибудь знает, как это сделать? Спасибо!

Set WshShell = CreateObject("WScript.Shell")
MsgBox ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"))

Function ConvertToKey(Key)
Const KeyOffset = 52
i = 28
Chars = "BCDFGHJKMPQRTVWXY2346789"
Do
Cur = 0
x = 14
Do
Cur = Cur * 256
Cur = Key(x + KeyOffset) + Cur
Key(x + KeyOffset) = (Cur \ 24) And 255
Cur = Cur Mod 24
x = x -1
Loop While x >= 0
i = i -1
KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
If (((29 - i) Mod 6) = 0) And (i <> -1) Then
i = i -1
KeyOutput = "-" & KeyOutput
End If
Loop While i >= 0
ConvertToKey = KeyOutput
End Function

person TechnicianOnline    schedule 15.04.2015    source источник


Ответы (3)


Попробуйте так:

Option Explicit
Dim WshShell,RegKey,WindowsKey,LogFile,fso
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
RegKey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"
WindowsKey = ConvertToKey(WshShell.RegRead(RegKey))
LogFile = "c:\key.log"
if fso.FileExists(LogFile) Then 
    fso.DeleteFile LogFile
end If
MsgBox WindowsKey,VbInformation,WindowsKey 
Call WriteLog(WindowsKey,LogFile)
WshShell.Run LogFile
'***********************************************************************************************************
Function ConvertToKey(Key)
    Const KeyOffset = 52
    Dim i,Chars,Cur,x,KeyOutput
    i = 28
    Chars = "BCDFGHJKMPQRTVWXY2346789"
    Do
        Cur = 0
        x = 14
        Do
            Cur = Cur * 256
            Cur = Key(x + KeyOffset) + Cur
            Key(x + KeyOffset) = (Cur \ 24) And 255
            Cur = Cur Mod 24
            x = x -1
        Loop While x >= 0
        i = i -1
        KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
        If (((29 - i) Mod 6) = 0) And (i <> -1) Then
            i = i -1
            KeyOutput = "-" & KeyOutput
        End If
    Loop While i >= 0
    ConvertToKey = KeyOutput
End Function
'*************************************************************************************************************
Sub WriteLog(strText,LogFile)
    Dim fs,ts 
    Const ForAppending = 8
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set ts = fs.OpenTextFile(LogFile,ForAppending,True)
    ts.WriteLine strText
    ts.Close
End Sub
'**************************************************************************************************************
person Hackoo    schedule 16.04.2015
comment
Это потрясающе, вместо этого я использовал этот скрипт, поскольку он открывает текстовый файл после извлечения ключа Windows для пользователя. Спасибо! - person TechnicianOnline; 20.04.2015

В приведенном ниже коде оператор echo заменяется вызовом ОбъектФайловойСистемы (ФСО). Этот объект может добавлять, перемещать, изменять, создавать или удалять папки (каталоги) и файлы на веб-сервере или рабочем столе. Нас особенно интересует метод CreateTextFile. .

DIM fso, NewsFile, WshShell

Set WshShell = CreateObject("WScript.Shell")

Set fso = CreateObject("Scripting.FileSystemObject")
Set write2File = fso.CreateTextFile("C:\key.log", True)
write2File.WriteLine(ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId")))
write2File.Close

Function ConvertToKey(Key)
Const KeyOffset = 52
i = 28
Chars = "BCDFGHJKMPQRTVWXY2346789"
Do
Cur = 0
x = 14
Do
Cur = Cur * 256
Cur = Key(x + KeyOffset) + Cur
Key(x + KeyOffset) = (Cur \ 24) And 255
Cur = Cur Mod 24
x = x -1
Loop While x >= 0
i = i -1
KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
If (((29 - i) Mod 6) = 0) And (i <> -1) Then
i = i -1
KeyOutput = "-" & KeyOutput
End If
Loop While i >= 0
ConvertToKey = KeyOutput
End Function
person WorkSmarter    schedule 16.04.2015
comment
Я получаю следующую ошибку при запуске этого сценария .VBS. - Char: 1 Ошибка: требуется объект: код WshShell: 800A01A8 Источник: ошибка времени выполнения Microsoft VBScript - person TechnicianOnline; 16.04.2015
comment
Он забыл добавить эту строку: Set WshShell = CreateObject(WScript.Shell), поэтому, если вы добавите эту строку, она сработает;) - person Hackoo; 16.04.2015
comment
@WorkSmarter, и ты заслуживаешь от меня +1 ;) - person Hackoo; 16.04.2015
comment
@WorkSmarter Я использовал этот скрипт как дополнительный вариант для работы в фоновом режиме, большое спасибо! - person TechnicianOnline; 20.04.2015

Wscript.echo "message"

выводит msgbox при запуске с wscript и эхо в STDOUT при запуске с cscript в командной строке.

cmd /c cscript //nologo c:\somepath\somefile.vbs > file.txt
person Trigger    schedule 16.04.2015
comment
Так что вам нужно только заменить msgbox на wscript.echo и запустить его правильно. - person Trigger; 16.04.2015