Determining path to Outlook.exe from java?

I want to call outlook from the command line (for various reasons) and wanted to know how I can find the path to the Outlook.exe file.

I'm sure it's stored in the registry, but was wondering how to do it from Java.

thank

0


source to share


4 answers


I found Microsoft's page that describes the procedure, not Java.



So I guess the question is how to access the registry from java.

+1


source


I found this site that might help you. This is a Java registry wrapper that seems to have a lot of features, but doesn't know how reliable the implementation is.



+1


source


Using Otis answer, the following code does it beautifully.

static String getOutlookPath() {
  // Message message = new Message();
  final String classID;
  final String outlookPath;

  { // Fetch the Outlook Class ID
    int[] ret = RegUtil.RegOpenKey(RegUtil.HKEY_LOCAL_MACHINE,   "SOFTWARE\\Classes\\Outlook.Application\\CLSID", RegUtil.KEY_QUERY_VALUE);
    int handle = ret[RegUtil.NATIVE_HANDLE];
    byte[] outlookClassID = RegUtil.RegQueryValueEx(handle, "");

    classID = new String(outlookClassID).trim(); // zero terminated bytes
    RegUtil.RegCloseKey(handle);
  }

  { // Using the class ID from above pull up the path
    int[] ret = RegUtil.RegOpenKey(RegUtil.HKEY_LOCAL_MACHINE, "SOFTWARE\\Classes\\CLSID\\" + classID + "\\LocalServer32", RegUtil.KEY_QUERY_VALUE);
    int handle = ret[RegUtil.NATIVE_HANDLE];
    byte[] pathBytes = RegUtil.RegQueryValueEx(handle, "");

    outlookPath = new String(pathBytes).trim(); // zero terminated bytes
    RegUtil.RegCloseKey(handle);
  }

  return outlookPath;
}

      

0


source


Below is a slightly modified solution from a similar problem: fooobar.com/questions/113603 / ... Note that I am using .pst instead of .xls

import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ShowOutlookInstalled {
    public static void main(String argv[]) {
        try {
            Process p = Runtime.getRuntime()
                    .exec(new String[] { "cmd.exe", "/c", "assoc", ".pst" });
            BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String extensionType = input.readLine();
            input.close();
            // extract type
            if (extensionType == null) {
                outlookNotFoundMessage("File type PST not associated with Outlook.");
            } else {
                String fileType[] = extensionType.split("=");

                p = Runtime.getRuntime().exec(
                        new String[] { "cmd.exe", "/c", "ftype", fileType[1] });
                input = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String fileAssociation = input.readLine();
                // extract path
                Pattern pattern = Pattern.compile("\".*?\"");
                Matcher m = pattern.matcher(fileAssociation);
                if (m.find()) {
                    String outlookPath = m.group(0);
                    System.out.println("Outlook path: " + outlookPath);
                } else {
                    outlookNotFoundMessage("Error parsing PST file association");
                }
            }

        } catch (Exception err) {
            err.printStackTrace();
            outlookNotFoundMessage(err.getMessage());
        }


    }

    private static void outlookNotFoundMessage(String errorMessage) {
        System.out.println("Could not find Outlook: \n" + errorMessage);

    }
}

      

0


source







All Articles