Vistaで、c:\Program Files以下のフォルダにデータを書き込むには?

解決


かんとく  2008-07-14 22:02:04  No: 100891

お世話になっております。

VB6,Vistaです。

Vistaでは、"c:\Program Files"以下のフォルダにデータを書き込もうとすると、アカウントが管理者であるかないかで、実際に書き込まれるフォルダの場所が変わるようですが、
アカウントの情報によらずに、プログラムで強制的にアカウントを管理者にしたり、"c:\Program Files\..."フォルダにデータを書き込んだりする方法はあるのでしょうか?

要は、プログラムのユーザが特別に操作をしなくても、どのユーザでも同じ"c:\Program Files\..."フォルダにデータを書き込みたいのです。

よろしくお願いします。


  2008-07-14 22:20:20  No: 100892

>プログラムで強制的にアカウントを管理者にしたり
それが出来たらセキュリティの意味が無い気がする
(UNIXなら、IDとパスワード分かれば簡単に変えられる気はするが…
  Windowsでも その手のがあったりするのだろうか?
  あるにしても、最低限IDとパスワードは必要なはず、さもなくば
  思いっきりセキュリティホールだ)
それに、そんなことが出来るなら、わざわざ市販ソフトで
「インストール時は管理者権限でログインしてください」
とか言われないような気がするのだが

…もしかしたら抜け道があるのかもしれないが、
少なくとも私は知らないのでご容赦を
何か抜け道あるなら補足お願いします


とおりすがり  2008-07-14 22:58:07  No: 100893

>…もしかしたら抜け道があるのかもしれないが、

書き方はある、
ただしウィルスとして検出される。
公の場で記載するというのは、チトまずい。


かんとく  2008-07-14 23:12:03  No: 100894

おっしゃるとおりです。

セキュリティ上問題のあることをしようとしていました。

変な質問ですみません。


YuO  2008-07-14 23:24:47  No: 100895

> 要は、プログラムのユーザが特別に操作をしなくても、どのユーザでも同じ"c:\Program Files\..."フォルダにデータを書き込みたいのです。

最低でもWindows XP以降,%ProgramFiles%に対してUsersはデフォルトで書き込み権限を持っていません。
# Win2000やWinNTにおいて,デフォルトがどうなっているのかは調べていないです。

基本的には,%AllUsersProfile%に提供者名\製品名となるフォルダを作成し,
そこにユーザー書き込み可能な権限を持ったフォルダを作成して,そこに対して読み書きすることになります。
# 権限与える為の設定が非常に面倒なのですけどね……。

これはインストーラで行うことになります。

なお,%ProgramFiles%に書き込むのは作法から外れますので,やらないようにしましょう。


かんとく  2008-07-15 20:09:08  No: 100896

ありがとうございます。
セキュリティや作法に気をつけてプログラムを組みたいと思います。

ところで、インストーラは、どうやってProgramFilesフォルダにファイルを書き込んでいるのでしょうか?
VBでもインストーラを作ることはできるのでしょうか?


魔界の仮面弁士  2008-07-15 20:17:18  No: 100897

インストーラといえども、権限の無いフォルダへの書き込みはできません。

しかし管理者は、Program Files への書き込み権限を有していますよね。
そしてインストーラは多くの場合、管理者権限で実行されるものです。

> VBでもインストーラを作ることはできるのでしょうか?
VB6 付属のディストリビューション ウィザードは、VB6 製ですので、
SETUP1.VBP に手を加える事で、インストーラをカスタマイズできます。
(SETUP.EXE が、VB6 ランタイムの組込と SETUP1.EXE の実行を担当します)


かんとく  2008-07-16 03:37:24  No: 100898

ありがとうございます。

Program Files 以下のフォルダにデータを書き込むには,
インストーラがプログラム上で管理者権限を操作するのではなく、インストーラを起動するときにユーザが管理者権限で起動するしかない、と考えたらよいでしょうか?

それと、SETUP1.VBP に手を加える事で、インストーラをカスタマイズできます。
とは、SETUP1.EXE という名前の実行ファイルを自分で好きなように作り、ディストリビューションウイザードによって作成されるSupportフォルダに入れておけば、そのプログラムがインストール実行時にSETUP1.EXE が起動する、ということでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加