昨日見た夢を教えて下さい

レジストリを読み込むときにエラーが出ます。(指定されたキャストは有効ではありません)
bool b_tbar
private void Form1_Load(object sender, EventArgs e)
{

try
{
Microsoft.Win32.RegistryKey regkey =
Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\***", false);

if (regkey == null)
{
b_tbar = true;
return;
}
b_tbar = (bool)regkey.GetValue("tbar");  <ーーここでエラー
regkey.Close();
}
catch (Exception e1)
{
MessageBox.Show( e1.Message);
}

}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{



Microsoft.Win32.RegistryKey regkey =
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"***");
regkey.SetValue("tbar", b_tbar);
regkey.Close();


}

どこをどうなおしたら良いのでしょか?教えてくださいお願いいたします。

A 回答 (2件)

「REG_SZ」ということは文字列です。


キャストではなくboolのConvertは使えないでしょうか?
    • good
    • 0
この回答へのお礼

レスありがとうございます。
お陰さまで、無事解決できました。

お礼日時:2011/08/05 15:08

http://msdn.microsoft.com/ja-jp/library/microsof …
を見る限り、bool型をレジストリに設定したときには別の型に変換されているのではないかと思います。

bool test = true;
Microsoft.Win32.RegistryKey regkey =
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"***");
regkey.SetValue("test", test);
RegistryValueKind rvk = regkey.GetValueKind("test");
regkey.Close();

というコードで実際にどの型に変換されているかを確認してみたらどうでしょうか。

ところで、値設定のときは @"***" で、値取得のときは @"Software\***" となって設定先と取得先が一致していないようにみえますが、本来のコードでもそのとおりなのでしょうか?

この回答への補足

REG_SZ,Trueで入っております。

パスは一致しております(記述ミスです)

補足日時:2011/08/05 09:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報