using System;
using Microsoft.Win32;

namespace cs_example {
  class Util {
    private const string registryKey = @"SOFTWARE\Scilab";
    private const string scilab_Install = @"LASTINSTALL";
    private const string scilab_PATH = @"SCIPATH";

    public static void AddScilabInstalltionPathToEnvironment() {
      var currentPath = Environment.GetEnvironmentVariable("path");
      if (currentPath == null) return;

      var scilabPath = GetScilabInstallPath();
      if (string.IsNullOrEmpty(scilabPath)) return;

      Environment.SetEnvironmentVariable("path", scilabPath + ";" + currentPath);
    }

    private static string GetScilabInstallPath() {
      using (var registryLocalMachine = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default)) {
        using (var registryScilab = registryLocalMachine.OpenSubKey(registryKey)) {
          if (registryScilab == null) return string.Empty;
          var scilabVersion = registryScilab.GetValue(scilab_Install);
          if (scilabVersion == null) return string.Empty;
          using (var registryScilabVersion = registryScilab.OpenSubKey(scilabVersion.ToString())) {
            if (registryScilabVersion == null) return string.Empty;
            var scilabPath = registryScilabVersion.GetValue(scilab_PATH);
            if (scilabPath == null) return string.Empty;
            string path = scilabPath.ToString();
            path += @"\bin";
            return path;
          }
        }
      }
    }
  }
}