タイトル : 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 以降での慣わしです。 |