tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: プログラムを入れ替えようとすると「パス名が無効です」
投稿日: 2019/09/11(Wed) 23:21
投稿者魔界の仮面弁士
もしかして、コピー用プログラムを右クリックして「管理者として実行」を
選択した場合には、FileCopy が成功するのではないでしょうか?


C:\Program Files (x86)\ や C:\Users\ は、
一般ユーザーにとっては読み取り専用のフォルダーです。

インストーラーや SYSTEM アカウント、管理者権限であれば
書き込みできますが、そのままの権限では編集できませんので、
それが原因であろうかと予想しています。

特に Vista 以降では、UAC が働きますので、たとえ Administrator として
ログオンしていたとしても、権限昇格しないうちは一般ユーザー扱いになり、
このあたりの制御がより厳密になりました。

VB6 アプリにおける XP 以下と Vista 以降の差異については、このあたりをご覧ください。
https://www.atmarkit.co.jp/fdotnet/vblab/vb6onvista_02/vb6onvista_02_01.html



現在のユーザーが編集可能な場所、たとえば「自分で作成したフォルダーC:\Test」を
使うとか、現行ユーザーの AppData フォルダーの下にインストールすることを検討してみてください。
http://rms-099.hatenablog.jp/entry/20130120/1359218895


C:\Program Files (x86)\ 配下というパスは変更できず、かつ、そのフォルダーに
現在のユーザーへの書き込み権限を付与しておくこともできない場合には、
ShellExecuteEx API で『RunAs』を指定して exe を起動することで、
一時的に権限昇格させるという手法もあります。
http://dechnostick.hatenablog.com/entry/20120307/1331140472

また上記 RunAs のように、管理者権限が必要な処理を行うボタンやリンクを設ける場合には、
その場所に盾アイコン(シールドアイコン)を付与するのが Vista 以降での慣わしです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。