DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB6アプリをVISTAで動かしたい

環境/言語:[vb6]
分類:[VB6以前]

VB6でネットワークの設定を変更するプログラムを
作ったのですが上手く動作しませんでした。
調べてみたところVISTAでは管理者権限が必要らしいので
管理者権限で実行すると正常に動作しました。
しかし、いちいち管理者権限で実行したくないので
プログラム中で管理者権限を取得するようなことは
できないでしょうか?
2008/08/20(Wed) 18:05:35 編集(投稿者)

[実行ファイル名].manifestを作って管理者権限で実行するように定義してやれば、
いちいち管理者権限で実行する必要はなくなると思います。

中身は以下の通り。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="ファイル名" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

ちなみに<requestedExecutionLevel level="requireAdministrator"/> って記述が管理者権限の付与部分です。
■No22768に返信(もょもとさんの記事)
返信ありがとうございます。
.manifestというのは使ったことが無いのですが
どのようにすればよろしいでしょうか?
■No22774に返信(かーとまんさんの記事)
>> [実行ファイル名].manifestを作って管理者権限で実行するように定義してやれば、
> .manifestというのは使ったことが無いのですが
> どのようにすればよろしいでしょうか?

manifesst (先の XML データ)を、以下のいずれかの方法で配置してみてください。


(1) project1.exe と同じフォルダに、projet1.exe.manifest という名前で配置。

http://www.atmarkit.co.jp/fdotnet/dotnettips/234winxpstyle/winxpstyle.html
http://zoosir.hp.infoseek.co.jp/tips/control/control01.htm


(2) project1.exe のリソースとして埋め込む。

http://zoosir.hp.infoseek.co.jp/tips/other/other01.htm
http://www.atmarkit.co.jp/fdotnet/dotnettips/235embmanifest/embmanifest.html

# Vista での <requestedPrivileges> は使ったことが無いのでわかりませんが、
# XP での <dependency> は、この方法で使えていました。
■No22779に返信(魔界の仮面弁士さんの記事)
度々、申し訳ありませんが
VB6でやる方法は無いのでしょうか?
2008/08/21(Thu) 13:35:54 編集(投稿者)

■No22782に返信(かーとまんさんの記事)
> VB6でやる方法は無いのでしょうか?

言語に依存する物では無いので、Delphi だろうと VB6 だろうと C# だろうと、
作成手順は同じですよ。
まずはメモ帳を起動して、manifest を作成/保存して試してみてください。

それとも、試してみたけれど駄目だったという事なのでしょうか?
■No22783に返信(魔界の仮面弁士さんの記事)
すいません説明不足でした。
なるべくなら2番目の方法を使いたいのですが
「ファイルを開く」が私の使用しているVB6には
無いのでやり方がわかりません。
■No22784に返信(かーとまんさんの記事)
> なるべくなら2番目の方法を使いたいのですが
まず、1番目の方法で期待動作したのでしょうか?


> 「ファイルを開く」が私の使用しているVB6には
> 無いのでやり方がわかりません。
Visual Studio 6.0 はお持ちでは無いでしょうか。

Visual Basic 6.0 のリソースエディタだと、
http://salv.miscnotes.com/2001/11/02_vb6.php
にあるように、数値のリソースタイプが作れないので、Visual Studio を
利用するか、あるいはそうした機能のあるソフト(PE Explorer 等)を利用するか、
http://www.heaventools.com/pe-explorer-jp.htm
誰かに埋め込みを依頼するか、あるいは 1 番の方法で妥協するか…。
■No22785に返信(魔界の仮面弁士さんの記事)
> Visual Basic 6.0 のリソースエディタだと、
> http://salv.miscnotes.com/2001/11/02_vb6.php
> にあるように、数値のリソースタイプが作れないので、

手動生成すれば行けそうです。以下、WinXP で動作確認。


まず、C:\Program Files\Microsoft Visual Studio\ から
COMMON\Tools\VB\RESOURCE というディレクトリを探してください。
無ければ、VB の CD-ROM 群の中に無いか探してみてください。
そこに、リソース コンパイラ(RC.EXE)があると思います。


(1) メモ帳を開き、先述のマニフェスト(XMLデータ)を貼り付ける。
  先頭の"<?xml" の前に、余計な空白や改行を含めないように注意。

(2) それを、UTF-8 テキストとして、上記 RESOURCE ディレクトリに
  "SAMPLE.XML" というファイル名で保存。

(3) 別途メモ帳を開き、以下の 1 行を記述。
  『1 24 MOVEABLE PURE "sample.xml"』

(4) それを、ANSI テキストとして、上記 RESOURCE ディレクトリに
  "TEST.RC" というファイル名で保存。

(5) コマンド プロンプトを開き、CD コマンドで、カレント ディレクトリを
  上記 RESOURCE ディレクトリに移動させる。

(6) コマンド プロンプトから『RC.EXE TEST.RC』を実行。
  RESOURCE ディレクトリに、「TEST.RES」ファイルが生成されるので、
  任意の場所に移動させておく。

(7) VB6 のプロジェクトで、[プロジェクト]-[ファイルの追加]メニューから
  先の「TEST.RES」ファイルを追加。

(8) そのまま、VB6 アプリをコンパイルして、EXE ファイルを作成して完了。
  あとは、RESOURCE ディレクトリに生成した *.RC を削除しておけば OK。
■No22786に返信(魔界の仮面弁士さんの記事)
無事解決しました。
本当にありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板