VC++ で、
SetRegistryKey
関数を用いてレジストリキーへの登録を行っています。

アプリケーション削除時に、
アプリケーションに関するレジストリキーの登録を一括削除するために、
これと逆の操作を行いたいのですが、どのようにすればよいのでしょうか?

読み込み、書き込みの
GetProfileString
WriteProfileString
関数はあるのですが、削除用の関数が見当たりません。

ご存知の方お教えいただけますでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」


>のような構成になっている場合の、 「__software_name__」 一式の削除の仕方をご教授いただけませんでしょうか。

RegOpenKeyExで__my_name__をOpenして、そこでRegDeleteKey()で__software_name__を消せばよかったはずです。
消したいキーのひとつ上のキーを開くはずです。

もちろんOpneするときにアクセスの権限で消せるようにしないとだめですけど。
MSDNにはNTではサブキーを持っていたら消せないと書いてありますね。。。

参考URL:http://www.microsoft.com/JAPAN/developer/library …
    • good
    • 0

RegOpenKeyEx()で削除したいキーを開いて


そのハンドルをRegDeleteKey()に渡してやればまとめて消せます。

この回答への補足

回答ありがとうございます。

しかしやはり、具体的な方法が今ひとつわかりません。
「まとめて消せる」というのは、1つ1つ消すのとは異なるのですね。

大変申し訳ないのですが、
「HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」
のような構成になっている場合の、 「__software_name__」 一式の削除の仕方をご教授いただけませんでしょうか。

補足日時:2001/05/06 00:05
    • good
    • 0

あんまりレジストリいじらないので


自信はないですが、
RegDeleteKey()
RegDeleteValue()
このあたりでは?

見当違いでしたらすみません。

この回答への補足

回答をありがとうございます。
確かに、おっしゃる通りの関数で削除可能なようです。
ありがとうございました。

現在Win2000を使っているのですが、
1つ1つのキーについて、上記の関数を実行しないと削除できないようです。
レジストリエディタで自分で開発したプログラムの項目を見ると、
「HKEY_CURRENT_USER\Software\__my_name__\__software_name__\__dir__\__key__」
のような構成になっているのですが、
ここで、
「__software_name__」
以下をごっそり削除したいと思うのですが、
よい方法をご存知でしたらお教えいただけますと幸いです。

補足日時:2001/05/05 16:06
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qワイズ レジストリ クリーナー

ワイズ レジストリ クリーナーでレジストリの掃除を考えています。
ワイズ レジストリ クリーナーを使った方のご意見お聞かせください。
・清掃後のPCの状況(快適になった?)
・不具合が出た?
・使用まえと変わらず。
等々ありましたら教えて下さい。

Aベストアンサー

緑アイコンしか削除しないのなら、それほど心配することもないツールなのですが、緑アイコンのみの削除では他のツールと比較すると削除できる範囲がものすごく限られます。
緑ではないからといって、危険なエントリかというと全くそうではない場合もあり、色の判断基準が今ひとつわかりません。
結局のところ「どのレジストリエントリをどう削除するとどんな影響が出るのかを理解している人がいちいちレジストリエディタ経由で削除することをサボるためのツール」であるという点は他のツールと変わりありません。ですので、正しく運用するにはそれなりのレジストリに関する知識が必要になり、緑以外のアイコンを削除するという一歩前に出た運用のしかたをしないと他のツール未満になってしまうでしょう。

ただし、その一歩の踏み出し方を間違えると
http://index.ascii.jp/sodanshitsu/index.php?topic_id=2357
http://www.softnavi.com/review/reg/wrc_1.html
のようになります。

Qvc++6.0 と vc++2500

vc++6.0で

ifstream ifs("userkey.dat");
ifs.getline(oc_user1, 63);

となっていてコンパイルできていたのですが

2005にしたら
コンパイルできません
どうしたらコンパイルできますか

6.0と2005の違いを知るには何を読んだらいいでしょうか?

Aベストアンサー

std::ifstream ifs("userkey.dat");
ifs.getline(oc_user1, 63);

としてみてはいかがでしょうか。

Qレジストリ・クリーナーは、必要ですか?

レジストリ・クリーナーが気になっています。
環境が快適になるなら使いたいのですが
以前、フリーソフトは、調子が悪かったです。
有料ならどうでしょうか?

Aベストアンサー

理解されていると思いますが、正しくレジストリクリーナーが動作できる前提は、一般にPC上で有効になっているDLLが正しくリンクされている事が前提ではあります。ですから、例えばソフトのインストールやアンインストール時の再起動など、お約束の作業を時々省略しているような人は、レジストリをいじると決まってPCの挙動が不安定になります。

また、有料・無料は大した問題ではないです。Glary Utilitiesは良いソフトですが、だから安全という事もありません。その辺りを注意して頂きたいです。

但し‥。
レジストリクリーナーは、表面的には不要なレジストリや重複するファイル群を是正・削除するだけの行為と思っているかも知れませんが、根本的にレジストリをいじるという事は、PCがどうなる事を指しているのか、よく理解されてからの方が良いです。本来はそれくらい影響を与える行為ですので、ソフトに全任する気で使うと危険です。
レジストリを簡単にいじる人は、その辺りを理解していない人が多いです。

QVC++5.0とVC++6.0の違いは?

何がどう変わったんでしょうか?
なんとなく使っているだけなのでぜんぜんわかりません。

簡単にんでいいんで思いつくことを書いてもらえるだけでもうれしいです。


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

Aベストアンサー

MFCのバージョンが違います。MFCのリファレンスを見れば6で増えた機能が分かります。

例えばブラウザを簡単に作れるCHtmlViewは6でないと使えません。

Qレジストリの掃除(クリーナー)について

こんばんわ。
windosXPhomeを使っていて、某フリーソフトを使ってレジストリの掃除をするのですが、
たまにレジストリを見ていると、あれ、この前アンインストールしたゲームの奴だというのがゴロゴロ出てきます。
今まで、そういったプログラムがアンイストールされて関連がなくなったゴミを掃除して、PCの動作を快適にしてくれるとばかり思い込んでいました。
気になって、すこしばかり調べたみたら
.ソフトによりけりで、強力なものはOSにダメージを残すぐらいに掃除してくれる。
.レジストリを掃除したからって、快適になるのかというのは疑問。
という記事をみかけました。
私、友達などにレジストリが肥大すると重くなるから、たまに掃除しといたほうがいいよ
などと言っておりましたゆえ、間違いなら、その過去を抹消しなくてはと思っている次第であります。
確かに、あまり変わらない気がしますが、だからといってゴミを残すのはどうよ
というような感覚で今もアイコンをポチっています。
みなさんは、レジストリは掃除していますか?この事についてなんか意見ありましたら、
片手間でよろしいのでお聞かせください。
あと、余談ですが、インストール監視ソフトというのがありますが、効果は、インストールを監視してアンイストール時にレジストリをインストール前の状態にもどしてくれるということでしょうか?
それならクリーナー要らずで最初からそっちを使えば、レジストリの肥大化はふせげるということでいいのでしょうか?
XPが出た頃は、そういうソフトが結構露出していましたが、最近そういうのをあまりきかないので、
レジストリの保全=快適動作ってわけではないという事の一つのあらわれなのかなと思いまして、、、ほんと素人の思い込みです、、、気になさらず、踏みつけていってください。

こんばんわ。
windosXPhomeを使っていて、某フリーソフトを使ってレジストリの掃除をするのですが、
たまにレジストリを見ていると、あれ、この前アンインストールしたゲームの奴だというのがゴロゴロ出てきます。
今まで、そういったプログラムがアンイストールされて関連がなくなったゴミを掃除して、PCの動作を快適にしてくれるとばかり思い込んでいました。
気になって、すこしばかり調べたみたら
.ソフトによりけりで、強力なものはOSにダメージを残すぐらいに掃除してくれる。
.レジストリを掃除した...続きを読む

Aベストアンサー

レジストリのバックアップをしてみると分かります。
XPだとせいぜい50~80MB、いろんなソフトをてんこ盛り
インストールしている人で多くて100MBです。
これが原因で重くなる理由って何ですか?と
逆に聞きたいくらいです。

重くなる、軽くなったと力説する人ほど、言ってみれば
PCの仕組みを理解していない初心者で、システムの復元も
多用する人が多く、客観的な速度やデータの開示がないのも
興味深いところです。

レジストリの多くは、どういうファイルを何のソフトで
開いたり、編集したりする関連付けと、一部のアプリで
右クリックした時のプルダウンメニューの拡張等が多いけど
メモリやHDDが高速で容量も余裕があり、CPUのキャッシュ改良や
マルチコア化され周波数が2GHz超の現在では、ウザいけど
重くはなりません。

重く感じるとすれば、Windows95かそれ以前のメモリがSIMMで
古くて遅く搭載メモリの制限や価格が高く(1MB=1万円以上)
HDD容量が数百MBとか数GB、CPUが何十~200MHzの時代の話です。
SDカードも1MB=¥1000くらいの時代はあったけど、今は
1GB=1024MB=¥100の時代です(よく壊れるけど)。

レジストリを監視するソフトも、今は不要です。
CCleaner等も初心者には安易に勧めるべきでないという見解です。
それよりは、HDDの健康状態を調べたり、データをバックアップ
したり効率よい運用するとか、スパイウェア・マルウェア対策
する方がよっぽど現実的です。

レジストリのバックアップをしてみると分かります。
XPだとせいぜい50~80MB、いろんなソフトをてんこ盛り
インストールしている人で多くて100MBです。
これが原因で重くなる理由って何ですか?と
逆に聞きたいくらいです。

重くなる、軽くなったと力説する人ほど、言ってみれば
PCの仕組みを理解していない初心者で、システムの復元も
多用する人が多く、客観的な速度やデータの開示がないのも
興味深いところです。

レジストリの多くは、どういうファイルを何のソフトで
開いたり、編集したりする関連付けと、...続きを読む

QVC++6.0からVC++.NETへの変遷について

VC++がようやく分かり出したこの頃ですが、今日本屋に立ち寄ったら、なっ なんとVC++の本がほとんど無くなり、代わりにVC++.NETとVC#ばかりになっていました。

C#はVC++とは違うと聞いていたのですが、読んでみるとVC++.NETもかなり違ってました。
(かなり違うという表現は、各人の状況により意見が異なると思いますが)

私のような本を見ながらコードを打って勉強している初心者にとって、VC++.NETの本ではVC++6.0を動かすことができません。

今から勉強する人や本を買って勉強しようとしている人あるいは、コンパイラを手に入れようとしている人はVC++.NETに移行してしまわざるを得ないのでしょうか?

すでにVC++6.0を十分活用出来ている人も、時代の流れでNETやC#を勉強していかなければならないのでしょうか?

つまり、単なるバージョンアップとは一線をなす変更がなされたということなのでしょうか?

良くご存知の方見解をお願いします。

Aベストアンサー

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したものが無駄になることはありません。
たぶん、.NET環境の開発には、C++よりもC#やVB.NETを利用することが
多くなると思いますが、C++を理解していることはプラスにはなってもマイナスには
なりませんので、頑張って下さい。

.NET関連のサイトを2つご紹介しておきます。ご参考に。
http://www.microsoft.com/japan/msdn/library/default.asp
http://www.atmarkit.co.jp/fdotnet/index.html

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したもの...続きを読む

Qワイズ レジストリ クリーナーについて

7PCにフリーソフトのWise Registry Cleaner を導入しました。ところで スタート→プログラムで
このソフト以外に関連の Clear With 1 Click というのがが出来ました。
立ち上げるとスキャンが始まってすぐに終了してしまいます。 
このソフトは何? またどう使うものか、教えて下さい。よろしくお願いします。

Aベストアンサー

レジストリクリーナーというのは
Windowsの設定情報を集めたレジストリというファイルに含まれる
無駄な情報を削除するもので、高速化が目的・・・

ということになっていますが、私の経験上言わせて頂くと、
全くの無意味どころか不具合を引き起こすだけです。
(私は以前これが原因でWindowsの再インストールをしたことがあります)

この種のソフトウェアには手を出さないことを強く薦めます。

(もっと言えば、Wise Registry Cleanerはスパイウェア疑惑もあります)



私の場合、PCが重くなったと感じた際には
以下のような作業をするのが基本です。

・不要ファイル削除
→まずは手動、次にWindowsクリーンアップやCCleaner(フリーソフト)

・デフラグ
→これはWindowsの標準機能で十分

・スタートアップ整理
→「ファイル名を指定して実行」よりmsconfig またはフリーソフト

・スパイウェアなどが入っていないか確認
→手持ちのセキュリティソフトでスキャン 次に無料のスキャンサービス


ただ前述のとおり、知識が浅い場合フリーソフトの使用は薦められません。

レジストリクリーナーというのは
Windowsの設定情報を集めたレジストリというファイルに含まれる
無駄な情報を削除するもので、高速化が目的・・・

ということになっていますが、私の経験上言わせて頂くと、
全くの無意味どころか不具合を引き起こすだけです。
(私は以前これが原因でWindowsの再インストールをしたことがあります)

この種のソフトウェアには手を出さないことを強く薦めます。

(もっと言えば、Wise Registry Cleanerはスパイウェア疑惑もあります)



私の場合、PCが重くなったと感じた際に...続きを読む

QVC++とVC++.NETその違いと最初に始めるならどっち?

学校でC言語の授業がスタートします。
別の言語のプログラムなら結構やりましたがC並びにVBは初めて(結構ワクワクしてます)

そして、この授業受ける人にVS6.0が教材として配布されたのですが(すでに家の部屋の片隅にありました(^^;)

他に必要な機材あるとの事でパソコン屋さんにいったついでに例のソフトあるのか見に言ってみました。
そしたらVS6.0がないΣ(゜Д゜;)
そのかわり、VS.NETがありました。「.NET?」首をかしげて店員さんに聞きます「.NETってなんですか?」でも「ちょっとそこまでは…」と首かしげて冷や汗だしてました。(当たり前ですよね)

じゃぁ「.NET」ってなぁにとなりますよね。うーんいったいなんだろう?何もしらない私はもちろんわかりません。

でも、「最新版だからいいのは確かだよね^^;」と思います。学校ではVS6.0使いますが、私は他の友達よりいい作品をたくさん家でつくって「エッヘン<( ̄^ ̄)>」となりたいです。(これは技術の向上にも役立ち一石二鳥ですからね。)

じゃあ質問です。

・VC++(又はVS6.0)とVC++.NET(又はVS.NET)その違いはなぁに?

・最初からVC++.NET(又はVS.NET)で初めていいのですか?

非常に悩む部分です。もうすぐC言語の授業があじまります。また授業で習ったことを生かして自分の趣味とお友達作りにも役立てたいなぁと思ってます。

どうか相談おねがいします。

学校でC言語の授業がスタートします。
別の言語のプログラムなら結構やりましたがC並びにVBは初めて(結構ワクワクしてます)

そして、この授業受ける人にVS6.0が教材として配布されたのですが(すでに家の部屋の片隅にありました(^^;)

他に必要な機材あるとの事でパソコン屋さんにいったついでに例のソフトあるのか見に言ってみました。
そしたらVS6.0がないΣ(゜Д゜;)
そのかわり、VS.NETがありました。「.NET?」首をかしげて店員さんに聞きます「.NETってなんですか?」でも「ちょっとそこま...続きを読む

Aベストアンサー

そもそもVS6はとっくの昔に販売終了しています。
新規購入なら自動的に.NETとなります。

#> この授業受ける人にVS6.0が教材として配布されたのですが
# いいのかそんなことして? > せんせえ


問題ありません。少なくとも数年前までは、学校にはこういったライセンス形態がありました。


それとVisual Studio 2003ってそんなに高いですか?
学生専用版は確かアマゾンで3800円でしたが。プログラムをするなら、あれはどう見ても買い得だと思います。

参考URL:http://www.amazon.co.jp/exec/obidos/ASIN/B0002ERS18/249-3944748-4369905

Qレジストリを修正したい。

ウイルスに感染し、レジストリを色々いじってしまい、修正したくてパソコンを初期状態にリカバリしました。ですが、やはりレジストリは修正されず、マイクロソフトが推奨するドクタークリーナーでレジストリをスキャンした所、432のエラーがありました。所が、ここは修正が有料で、しかも米国のサイトなので、料金も払えません。
どこかレジストリを修正できるドクタークリーナーの様なサイトはありませんか。本当に困っています。よろしくお願いします。

Aベストアンサー

No.5 回答に対するお礼

>「パソコンを購入時の状態に戻す」を選択しても、それは上書きなんでしょうか。

当初のご質問内容から判断すれば、「パソコンが購入時の状態に戻っていない」と判断するしかありません。

>修正したくてパソコンを初期状態にリカバリしました。

通常、「パソコンを購入時の状態に戻す」過程で、ハードディスクのフォーマット作業が入るはずですので、その直後はレジストリはクリーンな状態です。

>ですが、やはりレジストリは修正されず、「ドクタークリーナー」でレジストリをスキャンした所、432のエラーがありました。

よくあることですが、「いんちきソフト」でスキャンすると、ありもしないエラーを見つけたといって、ユーザーを驚かし、ソフトを買わせようとします。

今回のお問い合わせでは、「ドクタークリーナー」でスキャンした結果を真正なものと断定するから、謎が謎を呼んで、話の辻褄が合わなくなっているように思います。

「ドクタークリーナー」でのスキャン結果をすべて無視して、もっとまともなソフトでスキャンして結果を判断するようにすれば謎は解けるのではないでしょうか?。

☆ウィルス対策ソフトの導入

英語でよければ無料で使える優れたウィルス対策ソフトが幾つかあります。

しかし、当初は、有料の日本語のソフトを導入して、セキュリティ関連の知識や用語を習得しておくのがいいと思います。

「毎年五千円」ではなく、「一度だけ授業料を払う」と考えれば踏ん切りがつきやすいと思います。

「今に見ておれ! 無償のソフトに乗り換えてやる!」という気迫と努力が必要です。

それとも・・・

☆avast! 4 Home Edition 日本語版
http://www.forest.impress.co.jp/lib/inet/security/antivirus/avast.html

☆「おじいちゃんのメモ」
http://www.iso-g.com/

「avast!」関連の情報が日本語で公開されています。

No.5 回答に対するお礼

>「パソコンを購入時の状態に戻す」を選択しても、それは上書きなんでしょうか。

当初のご質問内容から判断すれば、「パソコンが購入時の状態に戻っていない」と判断するしかありません。

>修正したくてパソコンを初期状態にリカバリしました。

通常、「パソコンを購入時の状態に戻す」過程で、ハードディスクのフォーマット作業が入るはずですので、その直後はレジストリはクリーンな状態です。

>ですが、やはりレジストリは修正されず、「ドクタークリーナー」でレジスト...続きを読む

QVC++2010 画面なしのアプリケーション作成

VC++2010 画面なしのアプリケーションを作成したいんですが、VC++2010で作成する方法が調べても出てこなかったので質問させていただきました。

環境はWindows7で開発環境はVisualStudio2010 使用言語はC++です。

やりたいこととして、マイコンみたいにプログラムを組みたいと思っています。

メイン関数から始まって Wihile(1) ;で待機し SetTimer(1,1000,NULL)などのタイマ割込みで処理を行う形です。

よろしくお願いします。

Aベストアンサー

Win32アプリケーションで作成して…
・ウィンドウを作成しない。
・非表示ウィンドウを作成する。
とかで可能かと。

コンソールアプリケーションで作成すると、起動時にコマンド プロンプトが起動するかと思われます。
# 別アプリから標準入出力と標準エラー出力をパイプを使って入出力するように起動すればコマンド プロンプトなどは起動しないと思われますが。

>SetTimer(1,1000,NULL)

これだとウィンドウは必要ですよ?
WM_TIMERを受け取る為のウィンドウが必要です。
# MFCのCWnd::SetTimer()を使っていた場合、ウィンドウを作っている意識はないかも知れませんけどね。
# CWndから引っ張ってきたHWND使っています。

んで、MFCなどでSetTimer()使ったとしても…
>Wihile(1) ;で待機
で無限ループするのはいかがなものかと。


人気Q&Aランキング

おすすめ情報