レジストリ操作について【.NET】

解決


π+  2004-09-28 23:28:02  No: 116578

こんにちは!レジストリ操作について質問があります。学校の図書館から.NETの本を借りてきたのですが、Delete valueをつかってvalueを削除することはできたのですが、DeleteSubKeyが削除できなく、使用方法も載っていなく、いろいろ試したのですがどうしてもうまくいきません><
        key = Microsoft.Win32.Registry.CurrentUser
        key = key.CreateSubKey("software\Otameshi\test")
        key.SetValue("TEST", "sample")
        key.Close()
 と設定して、

        key = Microsoft.Win32.Registry.CurrentUser
        key = key.OpenSubKey("software\Otameshi\test", True)

        key.DeleteSubKey("software\Otameshi\test")
        key.Close()
とするとサブディレクトリがみつかりませんとエラーになってしまうのですが何がいけないのでしょうか。key.DeleteValueだとValueは削除できたのですが><

よろしくおねがいします><


π  2004-09-30 07:45:41  No: 116579

上記コピペですが、
        key = Microsoft.Win32.Registry.CurrentUser
        key = key.OpenSubKey("software\Otameshi\test", True)
        key.DeleteSubKey("software\Otameshi\test")
        key.Close()
の3行目の””内をいくら変えてもサブキーが見つかりませんとなってしまいます、、、ところが2行目ではTrueになっているはずなんですが・・・

Valueはうまくけせたんですがなぜなんでしょうか><


岡田 之仁  2004-09-30 08:36:07  No: 116580

.NET でレジストリアクセスは行っていませんが・・・
VB6 の折には行っていました。

確か、レジストリの同階層の全てのキーを削除しないと、
サブキーの階層を削除できない仕様だったと思います。

よって、SetValue("TEST","sample") とされていますので、
その"TEST"キーを削除しないと、
key.DeleteSubKey("software\Otameshi\test")
は成功しないと思いますが・・・

※  あくまで実行した結果を確認していませんので・・・

ご確認下さい。

以上。


π  2004-09-30 08:42:24  No: 116581

返信ありがとうございます><;
"TEST"キーを削除するなど、いろいろ試しましたがうまくいきませんでした><;
.NETでは独自の仕様があるのでしょうか。。。


岡田 之仁  2004-09-30 09:00:19  No: 116582

試しました・・・

        Dim key As Microsoft.Win32.RegistryKey

        key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\Otameshi\test")
        key.SetValue("TEST", "sample")
        key.Close()

        key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\Otameshi\test")
        key.DeleteValue("TEST")
        key.Close()
        key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\Otameshi")
        key.DeleteSubKeyTree("test")
        key.Close()
        key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software")
        key.DeleteSubKeyTree("Otameshi")
        key.Close()

※  http://dobon.net/vb/dotnet/system/registrykey.html
    ここにも、そのようには記述されていませんでした。
    修正が必要ですネ!〜

以上。


π  2004-09-30 10:14:41  No: 116583

で、、できました!!!Createから削除するんですね・・・どおりでできないわけです・・。でも私が借りてきた.netの本、「逆引き大全500」にはOpenから削除していたんです><;

私事なのに親切にしてくださってどうもありがとうございました><


π  2004-09-30 10:15:51  No: 116584

、、Openから削除していたのはValueでしたけど・・

削除する対象でOpenとCreateを使い分けることをしりました・・。

どうもありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加