痔になりやすい生活習慣とは?

レジストリを扱うプログラムに、"regsvr32" というのがあるようですが、
これで何ができるのかを少しは知っておきたいと思います。

で、まず手始めに、名前の由来を頭に入れておきたいと思いまして、
ご存知でしたらよろしくお願いいたします。

----
たとえば、"regedit" は、registry の editor ということなんでしょうが、
"regsvr32" についても同じ様に、

『「registry を ○○ するもの」ということで regsvr 、
 それと、○○ということで、最後に 32 と付けられていて、』

というような、名前の由来があるんじゃないかと睨んだんですが。

--

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

A 回答 (5件)

regsvr32で登録するものは、COMサーバです。



32は32ビットOS用だからでしょう。

ということで、「COMサーバのレジストリ登録を行うアプリの32ビット版」でしょう。
    • good
    • 0
この回答へのお礼

明快にご説明いただいて、ありがとうございます。

#1 への報告でも触れておりますが、
名前の由来については、「regsvr32.exe」自体の「プロパティ」からも読み取ることができました。

----
ご説明いただいた中の"COMサーバ" ですが、
これは、「 .dll ファイルとイコールで、」というような理解でいいでしょうか?

以前の MS-DOS の当時に、
実行ファイルには exe 形式と com 形式があって、
というような話を読んだような気もするんですが
(もっとも、内容は全く覚えてませんが)、
その辺とは、何か関連はありますでしょうか?

--

お礼日時:2004/03/30 18:37

>この辺のことは、まだあまり知識がないんですが、


> 『 OS 用のデータを登録する領域全体が "Register" で、
>  その Register 上に実際に登録されたデータ群(?)が "Registry" 』
>というように理解しておけばいいんでしょうか?

見落としてました(^^;;

今回出てきた”Register”は単語の意味の通り、”登録”です。
特にOSがもつレジストリ(Registry)と関係ないです。

#たまたまCOMサーバの登録先がレジストリであるから
混乱しそうですけど。
    • good
    • 1
この回答へのお礼

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

自分でも少し調べてみてたんですが、

 レジストリというのはそもそも "ファイル" になっていて、
 そのうちシステム関係のものは
  「C:\WINDOWS\system32\config」
 の中に入っていて、

 その "config" フォルダには、
 "○○.Evt" のように、レジストリには関係のないファイルもあって、

というような仕組のようですね。

となると、
  『 OS 用のデータを登録する領域全体が "Register" で、・・』
というような話は、
そもそもありえない訳ですね。

--

お礼日時:2004/04/03 17:21

> この辺のことは、まだあまり知識がないんですが、


私もその辺のことは、あまり知識はないんですが、

>  『 OS 用のデータを登録する領域全体が "Register" で、
>   その Register 上に実際に登録されたデータ群(?)が "Registry" 』
> というように理解しておけばいいんでしょうか?
そうですね、パソコンの世界に限って言えば、通常 Register というと
「レジスタ」と発音して、アセンブラ(機械語に1番近い開発言語)では
データの一時退避や計算対象データのセッティングなどの「箱」を指しますね。
「箱」といっても物理的にはメモリ上に割り当てられた「領域」ですから、
tochinkunさんの解釈で、いいんじゃないかと私も改めて思いました。

また、Registry は英単語で言えば「一覧表、リスト」といった意味ですので
(って、今辞書引いてみただけですが...)登録内容の一覧は当然前提として
登録されたデータ群を指すわけですので解釈としては妥当でしょうねぇ。

ただ、現実には厳密に区別して使われていないようですね。
「ほにゃららの値をレジストリに登録して...」といった言い方が
一般的にされています。
「...レジスタに登録して...」が本来なんでしょうが。
    • good
    • 0
この回答へのお礼

>・・tochinkunさんの解釈で、いいんじゃないかと私も改めて思いました。

どうもです。
ただ、chipmogura さんは、
ちょっと騙され易い面もおありではないかと ..(^^)

て言うか、
  「#5 のご回答 」& 「そのお礼欄での私の報告」
をご参照願えればと思います。

--

お礼日時:2004/04/03 17:42

>ご説明いただいた中の"COMサーバ" ですが、


>これは、「 .dll ファイルとイコールで、」というような理解でいいでしょうか?

イコールではありませんが、特殊(最近はあまり特殊ではないですが)なDLLです。

regsvr32で登録可能なものは、
ActiveX DLL
ActiveX コントロール
です。
これらはCOMの機能(メカニズム)を使用しています。

regsvr32の機能は、言い換えると
「ActiveXDLL、ActiveX コントロールのレジストリの登録を行うアプリケーション」ということになります。


>以前の MS-DOS の当時に、
>実行ファイルには exe 形式と com 形式があって、
>というような話を読んだような気もするんですが
>(もっとも、内容は全く覚えてませんが)、
>その辺とは、何か関連はありますでしょうか?

まったく関係ありません。

Component Object Modelの略です。

なお、COMの世界では、呼び出し元をCOMクライアント、呼び出されるモジュールをCOMサーバという言い方をします。
    • good
    • 1
この回答へのお礼

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

ご説明いただいたことも頭に置きながら、
Windows の仕組みをもう少し覗いてみたいと思います。

--

お礼日時:2004/04/03 00:56

そう、睨みましたかぁ、う~む、考えたこともなかった。



regsvr32のエラーメッセージに
「ほにゃらら.dllのDllRegisterServerは失敗しました。」というのが
あるので、「レジストリ(Register)登録を行う者(Server)の32ビット版」ではないかと、
私は「睨みました」が、どーなんでしょうかねぇ??
(って、私が疑問に思ってどーする!)
    • good
    • 0
この回答へのお礼

ありがとうございます。

実は、私も睨んだところまでは良かったんでしょうが(笑)、
その後がちょっと迂闊でした。

後で思い付いて、「regsvr32.exe」について
  スタート>検索
をやってみましたら、当然ながらそのファイルがヒットして、
すぐに次のようなことが確認できました。

 ・フォルダ名: C:\Wndows\system32
 ・説明: Microsoft(C) Register Server

あらかじめそんな風に調べていれば、
名前の由来そのものについては何のことはなかったんでしょうし、
お騒がせしてお恥ずかしいです。

----
関連で、一点だけお願いしたいんですが、

 ・ Registry Editor の方は、"Registry"
 ・ Register Server の方は、"Register"
のように言葉が使い分けられているのかと思います。


この辺のことは、まだあまり知識がないんですが、
 『 OS 用のデータを登録する領域全体が "Register" で、
  その Register 上に実際に登録されたデータ群(?)が "Registry" 』
というように理解しておけばいいんでしょうか?

--

お礼日時:2004/03/30 17:36

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qregsvr32.exe による DLLの登録について

質問は2つあります。以下、よろしくお願いします。
1.通常DLLはレジストリに登録しなくても使用できますが、どういう場合に登録が必要なのでしょうか?

2.regsvr32 xxx.dll を実行したところ、以下のようなエラーとなってしまいました。正しく登録するにはどうしたらいいのでしょうか?

xxx.dll は読み込まれましたが、DllRegisterServer エントリポイントが見つかりませんでした。このファイルが登録されていない可能性があります。

以上、よろしくお願いいたします。

Aベストアンサー

ちょっと違うかもしれないけど 大雑把にいうと

特定のソフトだけでなく他のソフトでも共通で使われるかもしれないモノは、登録が必要な事が多い

『エントリポイントが見つかりませんでした』ってことは、登録する必要がないってことです

QCOMコンポーネントって何?

よく、COMコンポーネントって聞くんですが、何のことかわかりません。VBやVBAのような言語名ではないことは、なんとなく分かるのですが・・・。できるだけわかりやすく教えてください。

Aベストアンサー

失礼ですが、クラスをご存知ないのであればCOMは多分
全く理解できないでしょうねぇ

クラスについても、ご自分で勉強が必要だとは思いますが
簡単に説明しておきます。
構造体(属性)に、関数(操作)を加え、カプセル化したものです。
従来のプログラミングでは、変数をばらばらに扱わず、
構造体と呼ばれる型に関係ある変数をまとめて、
プログラム中のデータ構造が明確になるようにしておきました。
そこで、この構造体に専属の関数を加えてしまえば、
その構造体は単独で自分の面倒をみることが出来るようになります。
それがクラスです。
その結果、プログラム中のデータや処理が、クラス単位で整理され、
それぞれ部品のように組み替えが可能になりました。

このように、クラス単位にプログラムを分割することで
巨大なプログラムを明瞭にする言語をオブジェクト指向言語といいます。

また、クラスには親と子があり、「継承」という考えを用いて
どんどんバージョンアップや特化を行うことが容易です。

VBで説明すると、
Dim value as A
として変数を宣言した場合、クラスは「A」です。
valueはオブジェクトや、インスタンスと呼ばれます。
valueを使って、Aに含まれる関数を呼び出して、valueを
操作することが出来ます。
value.Init()
等。

ざっくり説明するとこんな感じです。
詳細については、各言語の書籍を参照してください。

このようにして作ったクラスを、
・他の言語から使いたい
・ネットワーク経由で使いたい
などと言った機能を実現する、Microsoft提供の方法の一つが、
COMやDCOMと呼ばれるものです。
COMは、他のプログラムからの使いまわしに強いので、
一度作っておけば、VB、Delphiは勿論、VBScript、JavaScrips、WSHなどから
呼び出しが可能です。
また、COM自体のバージョンが上がっても、それを呼び出してる
プログラム自体には変更の必要がありません。

失礼ですが、クラスをご存知ないのであればCOMは多分
全く理解できないでしょうねぇ

クラスについても、ご自分で勉強が必要だとは思いますが
簡単に説明しておきます。
構造体(属性)に、関数(操作)を加え、カプセル化したものです。
従来のプログラミングでは、変数をばらばらに扱わず、
構造体と呼ばれる型に関係ある変数をまとめて、
プログラム中のデータ構造が明確になるようにしておきました。
そこで、この構造体に専属の関数を加えてしまえば、
その構造体は単独で自分の面倒をみることが出...続きを読む

Qオブジェクト(dll)のレジストリ登録について

いつもお世話になっております。

dllの使い方について教えてください。

vb5.0で開発を進めているのですが、
dllを呼び出す際に、レジストリ登録を
しなければいけないのでしょうか?

いくつかのサイトでは、参照設定際すれば、
実行できているようです。。

実行環境では、レジストリ登録しないと
動かない場合があるということでしょうか?

ご教授、よろしくお願いします。

Aベストアンサー

何のDLLか、によるが。

・あなたがVB5.0で作成したDLLを、開発に使ったマシン以外で使う。
→該当するマシンでレジストリに登録する必要があります。

・あなたがVB5.0で開発を行うにあたり使用するDLLを開発に使ったマシン以外で使う。
→VB5.0で参照設定できるのであれば、それと同じ方法で該当するマシンにDLLをインストールすれば同様にレジストリに登録済みとなる事でしょう。

よくわかんなければ次のようにしてみれば良いだろう。コマンドプロンプトを開いて
C:\>regsvr32 hogehoge.dll
これで「Successful」と出ればActiveX DLLだ。エントリポイントが見つかりません云々と言われたらそれはWin32ネイティブDLLという事。登録に失敗して環境を壊すという事はないのでとりあえず登録を試みてみれば良いのではないかな。

現在では大きく分けてDLLは3つある。
・Win32ネイティブDLL:レジストリ登録不要。パスの通った所に配置する。
・ActiveX DLL:レジストリ情報によって呼び出すDLL。レジストリに登録する。インプロセスCOMサーバと言っても差し支えないかもしれないがあるかもしれない。
・Microsoft .Net アセンブリ:レジストリの登録は不要。単純に実行ファイルと同じパスに配置するか、.Netにおけるレジストリといえるグローバルアセンブリキャッシュに登録する。

何のDLLか、によるが。

・あなたがVB5.0で作成したDLLを、開発に使ったマシン以外で使う。
→該当するマシンでレジストリに登録する必要があります。

・あなたがVB5.0で開発を行うにあたり使用するDLLを開発に使ったマシン以外で使う。
→VB5.0で参照設定できるのであれば、それと同じ方法で該当するマシンにDLLをインストールすれば同様にレジストリに登録済みとなる事でしょう。

よくわかんなければ次のようにしてみれば良いだろう。コマンドプロンプトを開いて
C:\>regsvr32 hogehoge.dll
これで「S...続きを読む

Qregsvr32でActiveX登録を行ったocx

regsvr32 で ActiveX登録を行った ocx がリソースエデイタ「のActiveX コントロールの挿入」で使用できなくて困ってます。

開発環境は VisualStudio2005 の VC++ で、Version は 8.0.50727.867 になります。

レジストリエディタで確認すると以下のレジストリキーで登録されていることを確認できるのですが。

HKEY_CLASSES_ROOT\CLSID\{9BD4A8F2-56BA-11D3-915D-00C04F797034}

『ActiveX コントロール テスト コンテナ』の「コントロールの登録」ダイアログで表示される一覧中には含まれていません。
また、「コントロールの登録」ダイアログで「登録」ボタンを押しても一覧に追加も行われません

なんとなくセキュリティっぽい事までは分かるのですが、どなたかヒントをお持ちでしょうか?

Aベストアンサー

OSはWindows7でしょうか?
もしかしたらUAC(ユーザーアカウント制御)の設定が原因かもしれません。
ユーザーアカウント制御の設定を通知しないに設定後、パソコンを再起動して
再度レジストリ登録しても同じ現象でしょうか?

Qディスク上のサイズとサイズはどうして違うんですか?

ファイルのプロパティ「全般」タブに表示されている「サイズ」と「ディスク上のサイズ」は、どっちが本当のサイズなのでしょうか?
どうしてサイズが違うのですか?
メールでファイルを送るときは、どっちのサイズを見ればいいのでしょうか?
これについて詳しく解説しているページがあったら、それもぜひ教えて下さい。
よろしくお願いします。

Aベストアンサー

「サイズ」はファイルの本当の大きさ、
「ディスク上のサイズ」はファイルが記録されているクラスタを合計した大きさです、
OSはファイルを幾つかのクラスタ(OSが管理するハードディスク上のブロック
の最小単位)を使ってHDDなどのメディアに保存します、

基本的に今のWindowsでは4KBのクラスタサイズで管理しているので例え1バイトのファイルでも「ディスク上のサイズ」4KBのサイズになってしまいます、
つまり常に「ディスク上のサイズ」の方が大きくなっているはずです、

メールに添付する場合は「サイズ」を確認するだけでOKです。

Q動作を停止しましたと表示され、停止します。

動作を停止しましたと表示され、アプリケーション停止します。

問題の詳細



発生元
怪盗攻略ブラウザ2

概要
動作が停止しました

日付
‎2013/‎08/‎07 0:19

状態
レポートが送信されました

説明
障害が発生しているアプリケーションのパス: C:\Users\******\AppData\Local\Apps\2.0\8B9RETX1.HAB\QDOQORNC.VKJ\kait..tion_8149fee0edf1ff73_0002.0001_5674af9cba542bd5\KaitoBrowser2_1.exe

問題の署名
問題イベント名: APPCRASH
アプリケーション名: KaitoBrowser2_1.exe
アプリケーションのバージョン: 1.0.0.0
アプリケーションのタイムスタンプ: 51ef9c9c
障害モジュールの名前: KERNELBASE.dll
障害モジュールのバージョン: 6.1.7601.18015
障害モジュールのタイムスタンプ: 50b83c8a
例外コード: 4000001f
例外オフセット: 00013219
OS バージョン: 6.1.7601.2.1.0.768.3
ロケール ID: 1041
追加情報 1: 12e5
追加情報 2: 12e5e8e1c146c520e06bac21034ebc4f
追加情報 3: 3670
追加情報 4: 367002d938052abab76c4a26ecb98de3

この問題に関するその他の情報
バケット ID: 3728007683

動作を停止しましたと表示され、アプリケーション停止します。

問題の詳細



発生元
怪盗攻略ブラウザ2

概要
動作が停止しました

日付
‎2013/‎08/‎07 0:19

状態
レポートが送信されました

説明
障害が発生しているアプリケーションのパス: C:\Users\******\AppData\Local\Apps\2.0\8B9RETX1.HAB\QDOQORNC.VKJ\kait..tion_8149fee0edf1ff73_0002.0001_5674af9cba542bd5\KaitoBrowser2_1.exe

問題の署名
問題イベント名: APPCRASH
アプリケーション名: KaitoBrowser2_1.exe
ア...続きを読む

Aベストアンサー

追加
>KERNELBASE.dll

VB***、.NET Framework*関連の場合もあります。
VB PowerPacksSetup.exeを実行インストールして解決した事例
参考URL

参考URL:http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=30385&no=0&KLOG=3

QSQLで特定の項目の重複のみを排除した全項目を取得する方法

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のような構造になっている場合に「項目名1」について重複している項目を排除し、結果として


項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 B    え    イ    江

上のようなデータを取得したいのです。
この時に、Aの重複を排除して取得するレコードは1~3行目のどれでもよいです。
また、データを取得する際には必ずそのレコードの「全項目」を取得したいのでDistinctはうまく使えませんでした。

どなたか詳しい方、方法を教えてくださると幸いです。回答お待ちしております。

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のよ...続きを読む

Aベストアンサー

比較可能で一意性のある値をもてる項目6をテーブルに追加して、

select T.* from T, (select Item1,min(Item6) as Item6 from T group by item1) W where T.item6=W.item6;

――ってやるのが、一番手っ取り早いと思います。
他のところに影響がでないのであればですが。
oracleならrowidを使うとか、レコードの更新時刻を突っ込むとか。

QAPI、OCX、DLLって何でしょう?

タイトルどおりの質問です。ど素人なのでわかりやすく説明していただけるとありがたいです。参考URLも教えていただけるとよりありがたいです。

Aベストアンサー

質問全てを盛り込んであるHPを探してみました。
そこそこわかりやすいとは思うのですけど、読んでみてください。

それと、私なりの簡単な説明です。
○DLL(Dynamic Link Library[ダイナミック・リンク・ライブラリ])
簡単に言えば、関数集ファイルです。
関数とは、VBのプログラミングでIf~Then,For~Next,Left,Lenなどいろいろ使った事あると思いますがこれがそうです。
このような一般的なものは、いわゆるVBランタイムDLLに定義されています。
その他いろいろと、用途別に*.DLLとあるわけです。

○OCX(OLE Custom Control[OLE・カスタム・コントロール])
簡単に言えば、部品です。
フォームやテキストボックス・ボタンなどなどがこれに当たります。
ようは、画面を構成する部品だと思ってもらっても構いません。

○API(Application Program Interface[アプリケーション・プログラム・インターフェイス])
これは、DLLで提供された関数を呼び出す仕組みのことです。
ですが、VB標準の関数使用時には必要ありません。
VB標準以外の外部DLL等の関数使用時に「これから使いますよ。」と言う定義です。

参考URL:http://www.ab.wakwak.com/~greenspace/dev-api/theapi/whatsapi.html

質問全てを盛り込んであるHPを探してみました。
そこそこわかりやすいとは思うのですけど、読んでみてください。

それと、私なりの簡単な説明です。
○DLL(Dynamic Link Library[ダイナミック・リンク・ライブラリ])
簡単に言えば、関数集ファイルです。
関数とは、VBのプログラミングでIf~Then,For~Next,Left,Lenなどいろいろ使った事あると思いますがこれがそうです。
このような一般的なものは、いわゆるVBランタイムDLLに定義されています。
その他いろいろと、用途別に*.DLLとあるわけです。

○O...続きを読む

QプロセスIDの取得方法について

下に同様の質問をしたのですが、削除方法分からない為、再度質問させていただきまし。

VB5.0を利用しています。
VBで書いたexeを実行した際に、そのプロセスID(自分の)は、GetCurrentProcessIdを利用すれば取得できると分かりました。
が、プログラム内でExcelを下記の様にオブジェクトを作成した場合、そのプロセスIDをどうやって取得すればいいのでしょうか?
ご存知の方居ましたら、教えて下さい。

Set ExcelObj = CreateObject("Excel.Application")
ここで起動?されたExcelのプロセスIDを取得したいのですが。

Aベストアンサー

FindWindowなどのキャプションか、クラス名で対象オブジェクトハンドルを取得し、
GetCurrentProcessId関数で、プロセスIDとスレッドIDを取得する方法が一般的。
過去スレにいっぱいサンプルがあります。

スクリプトを使用するなら、以下の方法もあったりする。

でもどちらも複数EXCEL起動時は、考えなければいけない部分多し。

Sub Main()
  Dim ExcelObj As Excel.Application
  
  Set ExcelObj = CreateObject("Excel.Application")
  ExcelObj.Visible = True
  Call DebugHandle
  ExcelObj.Quit
  Set ExcelObj = Nothing
End Sub

Public Function DebugHandle()
  Dim strSQL   As String
  Dim objWk    As Object
  Dim objXlsProc As Object
  strSQL = "SELECT Handle FROM Win32_Process WHERE Name = 'EXCEL.EXE'"
  Set objWk = GetObject("winmgmts:").ExecQuery(strSQL)
  For Each objXlsProc In objWk
    Debug.Print objXlsProc.Handle
  Next
End Function

FindWindowなどのキャプションか、クラス名で対象オブジェクトハンドルを取得し、
GetCurrentProcessId関数で、プロセスIDとスレッドIDを取得する方法が一般的。
過去スレにいっぱいサンプルがあります。

スクリプトを使用するなら、以下の方法もあったりする。

でもどちらも複数EXCEL起動時は、考えなければいけない部分多し。

Sub Main()
  Dim ExcelObj As Excel.Application
  
  Set ExcelObj = CreateObject("Excel.Application")
  ExcelObj.Visible = True
  Call DebugH...続きを読む

Q実行ファイル(.exeファイル)の作り方を教えて!

コマンドファイル(.bat)を作成しているのですが、見知らぬ方に簡単に変更される困っています。
そこで、(変更されないようにするにはと)思いついたのが実行ファイル(.exeファイル)です。
しかし、作り方が分かりません・・・

誰か教えて下さい。

Aベストアンサー

念のために、通常BATファイル等で作成したコマンドファイルをそのままEXEファイルには変換できません。
(そのようなtoolでもあれば別ですが)

通常、VBやCなどといったコンパイラ言語が必要になってきます。

そのような言語で書かれたソースファイルをコンパイラによってコンパイルするとOBJファイルなる物が作成され、それをLINK(リンカ)と呼ばれる物でOSに必要なファイルをくっつけてEXEファイル等にします。
(通常の物であれば一括してEXEファイルまで作ってはくれますが)

EXEファイルを作成するより適正なOSの元でファイルのアクセス管理を行った方が安全かつ簡単かもしれません。

それでも挑戦なさるのであればまず無償で手に入るコンパイラの入手をしましょう
BCC32が一番手頃ではないでしょうか。

参考URL:http://www.borland.co.jp/cppbuilder/freecompiler/


人気Q&Aランキング