C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

レジストリ利用の注意点 vb.net

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■92089 / inTopicNo.1)  レジストリ利用の注意点 vb.net
  
□投稿者/ EVE (1回)-(2019/08/23(Fri) 21:40:54)

分類:[.NET 全般] 

いつも参考にさせていただいておりありがとうございます

表題の件について
アプリの情報をユーザーに分かりにくい箇所に記録して
ソフトの使用履歴を管理しようとしています

具体的にはレジストリにフラグの文字列と日付を読み書きしようと思っています

ホームページを調べてみるとレジストリの書込み方法、読込方法の記載はあるのですが
私がレジストリを使ったことがないためとても不安があります

何かレジストリを使う上で、あるあるな注意点などありましたら
ご教示お願いできませんでしょうか
また、おすすめのホームページなども教えていただけると助かります

よろしくお願いいたします

引用返信 編集キー/
■92090 / inTopicNo.2)  Re[1]: レジストリ利用の注意点 vb.net
□投稿者/ shu (1189回)-(2019/08/24(Sat) 07:30:32)
No92089 (EVE さん) に返信

OS動作に大きく関わっているので不必要に多くの情報を読み書きしない方が良いかと思います。
引用返信 編集キー/
■92094 / inTopicNo.3)  Re[1]: レジストリ利用の注意点 vb.net
□投稿者/ 魔界の仮面弁士 (2318回)-(2019/08/24(Sat) 21:04:45)
No92089 (EVE さん) に返信
> アプリの情報をユーザーに分かりにくい箇所に記録して
分かりにくい箇所に記録する理由と意図が分かりませんでした。

データの内容を他者に読み取られたくないという意図ならば、
データを匿名化した上でクラウドに保存すれば、外部からは読み取れなくなるでしょう。
データの存在場所を隠したいという意図ならば、
アプリの exe ファイルの(もしくはアプリのあるフォルダー)の
『名前付きストリーム』に保存するという手もありますし、
データの可読性を落としたいというのなら、暗号化すれば良いと思いますし、
データの改竄を防ぎたいならデジタル署名を付与するという手も。

まぁ、.NET で組んでいる以上、この手の隠蔽工作にどこまでの効果があるかは疑問です。
サーバーアプリを作っているとか、オブファスケーションまで行うとかでもない限りは。


> ソフトの使用履歴を管理しようとしています
そのデータを使うのが利用者本人なら、無理に隠蔽する必要は無いと思いますが、
プログラム作者が収集したいという目的なら、個人情報保護法に抵触しないよう気を付ける必要がありますし、
複数人が共有するシステムでログイン者の履歴を管理する意図なら、改竄・盗聴防止の仕組みが求められるかも。


> 具体的にはレジストリにフラグの文字列と日付を読み書きしようと思っています
レジストリエディタでも閲覧しにくようにするなら、最近の Visual Studio がそうであるように、
外部のレジストリ ハイブに保存するという手もあるかと思います。
http://sx1752.hateblo.jp/entry/2017/03/10/184019
https://aonasuzutsuki.hatenablog.jp/entry/2019/01/01/000230


> 何かレジストリを使う上で、あるあるな注意点などありましたら
特に思い当たりませんが、揮発性レジストリと不揮発性レジストリの違いを考慮しておく…とか?
引用返信 編集キー/
■92098 / inTopicNo.4)  Re[2]: レジストリ利用の注意点 vb.net
□投稿者/ EVE (2回)-(2019/08/25(Sun) 15:37:03)
shu (1189回)-(2019/08/24(Sat) 07:30:32)
No92089 (EVE さん) に返信
>OS動作に大きく関わっているので不必要に多くの情報を読み書きしない方が良いかと思います。

ご回答ありがとうございます
考え方を教えてくださりありがとうございます
そのように注意してやってみようと思います。



No92094 (魔界の仮面弁士 さん) に返信
> ■No92089 (EVE さん) に返信

詳しいご説明ありがとうございます
いろいろな方法がとても参考になりました

> 分かりにくい箇所に記録する理由と意図が分かりませんでした。

単にユーザーにばれないようにライセンスキーと使用期限の保存ができればよかったりします
だからレジストリに記録しても見れる、といわれるかもしれませんが
素人が気軽にできなければそれでよいかと思っています


>>具体的にはレジストリにフラグの文字列と日付を読み書きしようと思っています
> レジストリエディタでも閲覧しにくようにするなら、最近の Visual Studio がそうであるように、
> 外部のレジストリ ハイブに保存するという手もあるかと思います。
> http://sx1752.hateblo.jp/entry/2017/03/10/184019
> https://aonasuzutsuki.hatenablog.jp/entry/2019/01/01/000230

記事を見ると動かなくなったという記事がありました。
たぶんレジストリのほうが簡単なんですよね??



> 特に思い当たりませんが、揮発性レジストリと不揮発性レジストリの違いを考慮しておく…とか?

ありがとうございます
調べてみました
レジストリについてまったく素人なのでとても勉強になりました

ひとつ心配に思っていたのが

【心配1】
レジストリを保存先とした場合にユーザー権限により読み書きできないことを
考慮しないといけないものなのかどうか

【心配2】
shuさんもご記載の通り、ネーミングや場所が悪くて
他のシステムに影響するようなことがないのかどうかについて、心配しています

ネーミングや保存場所で注意することなどあるのでしょうか
なるべく 無難 なものであればなんでもいいと思っています


引用返信 編集キー/
■92099 / inTopicNo.5)  Re[3]: レジストリ利用の注意点 vb.net
□投稿者/ とっちゃん (621回)-(2019/08/25(Sun) 16:27:20)
No92098 (EVE さん) に返信

> 単にユーザーにばれないようにライセンスキーと使用期限の保存ができればよかったりします

> 【心配1】
> レジストリを保存先とした場合にユーザー権限により読み書きできないことを
> 考慮しないといけないものなのかどうか
>
レジストリに限りませんが、アカウント権限は考慮する必要があるでしょう。

例えば、HKEY_CURRNET_UESR は、そのユーザーアカウントでのみ読む・書くが行えます。
(ログイン時に自動的にバインドされる特殊なハイブファイルだったりします)。

ライセンスキーと使用期限とするとマシンアカウントのほうがいい場合もあり得ますね。

HKEY_LOCAL_MACHINE\SOFTWARE 配下に保存するのが一般的です。

ただし、書き込みには管理者権限が必要なため、インストールデータとして保存されるようにするなど
それ相応に工夫する必要があります。

ユーザーごとにライセンスキーを発行という場合はこの限りではありませんが。


> 【心配2】
> shuさんもご記載の通り、ネーミングや場所が悪くて
> 他のシステムに影響するようなことがないのかどうかについて、心配しています
>
> ネーミングや保存場所で注意することなどあるのでしょうか
> なるべく 無難 なものであればなんでもいいと思っています
>

具体的な場所ですが、
上記のベースに、昔からの標準としては

企業名\製品名\

という感じで分離するというのが通例となっています。
XP のころまで規定されていた Logo ガイドにこういう記述があったため
今も慣例的にこういう形で用意するようになっています。

例えば、勉強会での発表等で使うサンプルを作った時は
Wankuma\AppName を基準として作っています(AppName はアプリケーション名)。

レジストリなら
HKEY_CURRENT_USRE\Sotware\Wankuma\AppName や
HKEY_LOCAL_MACHINE\SOFTWARE\Wankuma\AppName
という感じで用意しています。

引用返信 編集キー/
■92106 / inTopicNo.6)  Re[1]: レジストリ利用の注意点 vb.net
□投稿者/ 大谷刑部 (6回)-(2019/08/26(Mon) 09:33:04)
No92089 (EVE さん) に返信
> いつも参考にさせていただいておりありがとうございます
>
> 表題の件について
> アプリの情報をユーザーに分かりにくい箇所に記録して
> ソフトの使用履歴を管理しようとしています
>
> 具体的にはレジストリにフラグの文字列と日付を読み書きしようと思っています

レジストリ自体、レジストリエディタで簡単に読み書きできる情報なので、
ちょっとOSに詳しいユーザーなら簡単に見れるし改ざんできますよ。
隠蔽したいのであれば、むしろDBに格納するかバイナリ化する方が効果的かと。

> ホームページを調べてみるとレジストリの書込み方法、読込方法の記載はあるのですが
> 私がレジストリを使ったことがないためとても不安があります

元号の情報がレジストリ管理でMSが編集方法まで公開しているくらいなので、あまり神経質になる必要ないのでは?
と思います。
OSの挙動を変えるレジストリなら慎重になる必要はあるでしょうが、所詮特定のアプリで使うサブキーおよび値を追加するだけなら、何の問題もないかと。

> 何かレジストリを使う上で、あるあるな注意点などありましたら
> ご教示お願いできませんでしょうか
> また、おすすめのホームページなども教えていただけると助かります

https://dobon.net/vb/dotnet/system/registrykey.html

引用返信 編集キー/
■92107 / inTopicNo.7)  Re[1]: レジストリ利用の注意点 vb.net
□投稿者/ 774RR (729回)-(2019/08/26(Mon) 14:04:01)
レジストリの一部箇所や C:\Windows\system32 は 64bit process と 32bit process とで違う場所を指す仕様っす(システムフォルダリダイレクトでいいんだっけ?)

なので 64bit マシン上で 32bit プロセスを起動したり 64bit プロセスを起動したりと x86/x64 混在させる場合にはうまく考えないと、同じ場所を読んでいるつもりで実は別、ってことがあるので事前に考えておく必要がありそう。

ユーザにどのくらいの技術レベルがあるか次第だけど Properties.Settings.Default で自動生成される user.config でも十分わかりにくいところにあるので、それでよければコード簡単になって楽っす。



引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ