メモ:System.Management 名前空間を使って、システム環境変数を設定する

参考にしたサイト:FreeVBCode code snippet: Set System Information and Environment Variables With VB.Net


試したコード

using System;
using System.Management;
using System.Diagnostics;

namespace WebApplication1
{
  public partial class _Default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Environment");
      foreach (ManagementObject obj in searcher.Get()) {
        Debug.WriteLine(obj["Name"]);
        Debug.WriteLine(obj["UserName"]);
        if (obj["Name"].ToString() == "Path" && obj["UserName"].ToString() == "<SYSTEM>")
        {
          var path = obj["VariableValue"].ToString();
          if (obj["VariableValue"].ToString().Substring(obj["VariableValue"].ToString().Length - 1) == ";")
          {
            obj["VariableValue"] = obj["VariableValue"].ToString() + "hoge;";
          }
          else {
            obj["VariableValue"] = obj["VariableValue"].ToString() + ";hoge;";
          }
          obj.Put();
        }
      }
    }
  }
}

System.Management 名前空間初めて使った。まあ System.Environment で出来たのでこっちを使うことは無さげですが。。
WMI を使うこと機会があれば、System.Management 名前空間を使うのかな〜