LoginSignup
2
1

More than 3 years have passed since last update.

ウィルスバスターのスマートスキャンエージェントのバージョンを取得する

Last updated at Posted at 2019-07-17

はじめに

ウィルスバスター((C) Trend Micro)でファイルのウィルスキャンを行うに当たり、スマートスキャンのパータンファイルのバージョンを確認するために、VBScriptをnode.jsで動作させるアプリを作ったのでアップします。
業務で利用できます。

前提

  • OS : Windows7以上
  • PoweShellのターミナルで実行
  • VSCodeでコード編集
  • node.js環境構築済み

Windows レジストリよりスマートスキャンバージョンを取得する

getregvalue.vbs

  • keysのHKLM、HKEY_LOCAL_MACHINEの省略。
  • Echoでstdoutに取得した値を出力します。
Option Explicit
On Error Resume Next

' (c) Trend Micro SmartScanAgentPatternVersion

Dim objShell
Const keys = "HKLM\SOFTWARE\TrendMicro\UniClient\1700\Scan\SmartScanAgentPatternVersion"

Set objShell = WScript.CreateObject("WScript.Shell")
If Err.Number = 0 Then
    Wscript.Echo objShell.RegRead(keys)
Else
    Wscript.Echo  "エラー: " & Err.Description
End If

Set objShell = Nothing

VBSCriptを動かすJavaScript

getregvalue.js

  • //Nologoでcscriptのロゴ出力を抑止します。
  • あえて、console.logを使用しないで、process.stdout.writeで値を出力(改行抑止)
  • getregvalue.vbsはこのgetregvalue.jsと同じでディレクトリにあること。
    var spawn = require("child_process").spawn;

    var  proc =  spawn('cscript.exe',['//Nologo ./getregvalue.vbs'], { shell: true },(err,stdout,stderr) => {
        if (err) { console(err) }
    })

    proc.stdout.setEncoding('UTF-8');
    proc.stdout.on('data', (data) => {
        process.stdout.write(data.toString())
    });

実行結果

本日 2019/07/17

PS C:\Users\~> node getregvalue.js
15.237.00

2019-07-17-11-59-00.png

まとめ

日々業務でファイルのウィルススキャンの実行結果のエビデンスを作成するので、ウィルスバスターのメニューからバージョンを確認する手間を省くために作成しました。
つまらないものですが、以外と便利です。

付録 ( 2019/07/24 追記 )

取得したウィルスパターンバージョンを利用するサンプルコードを追加します。

  • Promise & resolveでバージョンを返却します。
function GetRegVal() {
  const spawn = require("child_process").spawn;
  return new Promise((resolve,reject) => {
      let proc   =  spawn('cscript.exe',['//Nologo ./getregvalue.vbs'], { shell: true }, (err, stdout, stderr) => {
          if (err) { console(err) }
      })

      proc.stdout.setEncoding('UTF-8');
      proc.stdout.on('data', (data) => {
        resolve(data.toString());
      })
  })
}
  • .then((戻り値) => { コーディング内で戻り値を参照します。 };
   GetRegVal().then((pattern) => { 
       // ここに patternを利用したコードを記述します
       console.log(pattern);
   })
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1