作成 2011.02.13
更新 2011.02.13
ASP.NET でレジストリ参照2
コード
ASP.NET でレジストリ参照 を関数化しました。
<%@ 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>
実行結果
Domain 成功 test.lan
Root Domain 失敗 要求されたレジストリ アクセスは許可されていません。
no key 失敗 オブジェクト参照がオブジェクト インスタンスに設定されていません。
no val 失敗 (no value)
タグ: ASP.NET CSharp

©2004-2017 UPKEN IPv4