- ベストアンサー
Vistaで情報が取れない現象について教えてください
- ActiveXを用いたDirectXからの情報取得がVistaでできない問題について解説します。
- VistaでActiveXからDirectXを叩いて情報を取得する際に、一部の情報が取れない現象が発生します。
- 設定を変えて保護モードを外すことで情報を取得できますが、保護モードが有効の状態でも情報を取得したいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>一般ユーザでログインしているケースでActiveX >で実行する際、アカウントとパスワードを要求されるということ >でしょうか? アイコンクリックのプログラム起動時のオプションメニューや、ショートカットのオプションに「管理者として実行」とか「特権レベルの管理者として実行」と言うのがありますね。 これは、実行時の権限を変更して実行している訳ですが、この権限変更の際に「権限変更API関数に、アカウント名やパスワードなどのユーザー情報を渡す必要がある」のです。 保護されたシステム情報を取得するのであれば、同様に、特権レベルで情報を取得しなければなりません。 通常、特権管理者としてビルトインユーザーである「Administrator」が居る筈なので、このアカウントを使用して権限(特権)を得て、特権レベルで保護された項目にアクセスします。 この時、もし「Administrator」アカウントにパスワードによる保護がかかってないのであれば(パスワードが設定してないならば)「権限変更API関数に、アカウント名やパスワードなどのユーザー情報を渡す時に、パスワードを無しにすれば良い」ので、ユーザーに問い合わせる必要はありません。 もし、パスワード保護してあるなら、パスワード無しで権限変更しようとした時にエラーで返ってくるので「パスワードの問い合わせAPI関数や、ユーザー情報の取得API関数を呼んで、アカウントとパスワードを入力するシステムダイアログを出させる」などでパスワードを取得し、それを元に権限を変更しなければなりません。 要は「パスワードが必要なら、アプリケーション自身でアカウントとパスワードを要求しに行く必要がある」って事です。 まあ、ユーザー情報の取得API関数のように、呼んだら勝手にアカウントとパスワードを聞いてくるAPI関数もありますが、この関数を呼ぶ事自体が「アプリケーション自身でアカウントとパスワードを要求しに行く」ってのと同義なので(^^; 以下蛇足。 普通、一般的な使い方をしているパソコンなら「Administrator」にパスワードは掛かってません。 何故なら「Administratorというアカウントが存在している事さえ知らないユーザー」が多いので、パスワード無いのが殆どです。
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8801/19960)
追記。コンパイラがVCならマニフェストを使うと言う手もあります。 http://www.geocities.jp/i_love_balard/myhome/dnet/manifest.html アプリと同じ場所にマニフェストファイルがあれば、アプリを管理者権限で実行させられるので、アプリ側では何もしなくて済みます。 つまり「保護に引っ掛かってXPでしか動かないアプリも、マニフェストファイルがあれば、保護に邪魔されずに、そのまま動かせられる」と言う事です。
お礼
chie65535様 回答ありがとうございます。 マニフェストファイルではなく、マニフェストを埋め込む方法を 試しました。 ActiveXは「×」になって動きませんでした。 エラーログには、特権がなくて実行できない旨書いてありました。 マニフェストファイルについても試してみます。
- chie65536(@chie65535)
- ベストアンサー率44% (8801/19960)
>しかし、保護モードが有効の状態で、 >情報取得したいです。 アクセス権獲得関数を用いてアクセス権を得て下さい。 保護モードのままアクセス権を得ない場合、保護された項目にはアクセス出来ません。 場合によっては、アクセス権を得る為に特権ユーザーのアカウントとパスワードが必要になります。
お礼
chie65535様、ご回答ありがとうございます。 アクセス権獲得関数というのがあるのですね。早速試してみます。 1つだけ気になるのが、「場合によっては、アクセス権を~」 とありますが、一般ユーザでログインしているケースでActiveX で実行する際、アカウントとパスワードを要求されるということ でしょうか?
お礼
chie65535様 回答ありがとうございます。 アカウントとパスワードの件、理解しました。