こんにちは!レジストリ操作について質問があります。学校の図書館から.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は削除できたのですが><
よろしくおねがいします><
上記コピペですが、
key = Microsoft.Win32.Registry.CurrentUser
key = key.OpenSubKey("software\Otameshi\test", True)
key.DeleteSubKey("software\Otameshi\test")
key.Close()
の3行目の””内をいくら変えてもサブキーが見つかりませんとなってしまいます、、、ところが2行目ではTrueになっているはずなんですが・・・
Valueはうまくけせたんですがなぜなんでしょうか><
.NET でレジストリアクセスは行っていませんが・・・
VB6 の折には行っていました。
確か、レジストリの同階層の全てのキーを削除しないと、
サブキーの階層を削除できない仕様だったと思います。
よって、SetValue("TEST","sample") とされていますので、
その"TEST"キーを削除しないと、
key.DeleteSubKey("software\Otameshi\test")
は成功しないと思いますが・・・
※ あくまで実行した結果を確認していませんので・・・
ご確認下さい。
以上。
返信ありがとうございます><;
"TEST"キーを削除するなど、いろいろ試しましたがうまくいきませんでした><;
.NETでは独自の仕様があるのでしょうか。。。
試しました・・・
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
ここにも、そのようには記述されていませんでした。
修正が必要ですネ!〜
以上。
で、、できました!!!Createから削除するんですね・・・どおりでできないわけです・・。でも私が借りてきた.netの本、「逆引き大全500」にはOpenから削除していたんです><;
私事なのに親切にしてくださってどうもありがとうございました><
、、Openから削除していたのはValueでしたけど・・
削除する対象でOpenとCreateを使い分けることをしりました・・。
どうもありがとうございました。
ツイート | ![]() |