Jump to Real's How-to Main page

Capture the output from a VBS

This HowTo query the Windows Registry for a specific key. The VBS prints the result and from Java, we capture this output.

Since we need the output, we must use the VBS interpreter for the console mode (CSCRIPT.EXE).

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;

public class VBSUtils {
  private VBSUtils() {  }

  public static String readWindowRegistry(String key) {
    String result = "";
    try {

        File file = File.createTempFile("realhowto",".vbs");
        file.deleteOnExit();
        FileWriter fw = new java.io.FileWriter(file);

        String vbs = "Dim WSHShell \n"
                   + "Set WSHShell = WScript.CreateObject(\"WScript.Shell\") \n"
                   + "WScript.Echo _ \n"
                   + "WSHShell.RegRead(\"" + key + "\") \n"
                   + "Set WSHShell = Nothing \n";
        fw.write(vbs);
        fw.close();
        Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
        BufferedReader input =
            new BufferedReader
              (new InputStreamReader(p.getInputStream()));
        String line;
        while ((line = input.readLine()) != null) {
            result += line;
        }
        input.close();
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return result.trim();
  }



  public static void main(String[] args){
    //
    // DEMO
    //
    String result = "";
    msgBox("Get the path of Acrobat reader from the registry");
    result = readWindowRegistry
      ("HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\AcroRd32.exe\\");
    msgBox("Acrobat Reader is located in " + result);
  }

  public static void msgBox(String msg) {
    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
       null, msg, "VBSUtils", javax.swing.JOptionPane.DEFAULT_OPTION);
  }
}

If you find this article useful, consider making a small donation
to show your support for this Web site and its content.

Written and compiled by Réal Gagnon ©1998-2007
[ home ]