<%@ PAGE LANGUAGE="C#" %>
<%@ Import Namespace="Microsoft.Win32" %>
<html>
<head>
<title>get username</title>
<style>
table{border-collapse:collapse;}
tr{vertical-align:top;}
td{border:1px solid #999;
font-family:monospace;}
</style>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
  String str_table;
  String str_result = "";
  String domain_key = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters";
  String domain_val = "Domain";
  String dn_key = "SYSTEM\\CurrentControlSet\\Services\\NTDS\\Parameters";
  String dn_val = "Root Domain";
  String no_key = "no key";
  String no_val = "no val";
  str_table = "<tr><td>"+domain_val+"</td><td>";
  if( RegistryRead(domain_key,domain_val, ref str_result) )
  {
    str_table += "成功</td><td>";
  }
  else
  {
    str_table += "失敗</td><td>";
  }
  str_table += str_result+"</td></tr>";
  str_table += "<tr><td>"+dn_val+"</td><td>";
  if( RegistryRead(dn_key,dn_val, ref str_result) )
  {
    str_table += "成功</td><td>";
  }
  else
  {
    str_table += "失敗</td><td>";
  }
  str_table += str_result+"</td></tr>";
  str_table += "<tr><td>"+no_key+"</td><td>";
  if( RegistryRead(no_key,no_val, ref str_result) )
  {
    str_table += "成功</td><td>";
  }
  else
  {
    str_table += "失敗</td><td>";
  }
  str_table += str_result+"</td></tr>";
  str_table += "<tr><td>"+no_val+"</td><td>";
  if( RegistryRead(domain_key,no_val, ref str_result) )
  {
    str_table += "成功</td><td>";
  }
  else
  {
    str_table += "失敗</td><td>";
  }
  str_table += str_result+"</td></tr>";
  lbl_result.Text = "<table>"+str_table+"</table>";
}
bool RegistryRead(String Key, String Value, ref String Result)
{
  bool ret = false;
  String no_value_text = "(no value)";
  Result = "";
  
  try
  {
    using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(Key))
    {
      Result = (String)(rk.GetValue(Value,no_value_text));
      rk.Close();
      if(!Result.Equals(no_value_text)) ret = true;
    }
  }
  catch(System.Security.SecurityException se)
  {
    Result = se.Message;
  }
  catch(NullReferenceException nr)
  {
    Result = nr.Message;
  }
  return ret;
}
</script>
</head>
<body>
  <form runat="server">
  <asp:Label id="lbl_result" Text="" runat="server" />
  </form>
</body>
</html>
作成 2011.02.13
更新 2011.02.13
更新 2011.02.13
ASP.NET でレジストリ参照2
コード
ASP.NET でレジストリ参照 を関数化しました。
実行結果
| Domain | 成功 | test.lan | 
| Root Domain | 失敗 | 要求されたレジストリ アクセスは許可されていません。 | 
| no key | 失敗 | オブジェクト参照がオブジェクト インスタンスに設定されていません。 | 
| no val | 失敗 | (no value) |