プロが教える店舗&オフィスのセキュリティ対策術

FileCopy "D:\◆◆.exe", "C:\◆◆.exe" で実行時エラー75 パス名が無効です。とエラーが発生します。
FileCopy "D:\◆◆.exe", "D:\Sample\◆◆.exe"ではエラーが発生しないのでたぶん\C:の部分が管理者権限の問題でエラーになっているのかなって思っています。
このエラーを回避する方法をご教示いただきたくお願いいたします。

質問者からの補足コメント

  • 実行しました。コマンドプロンプトの左上には「管理者:コマンドプロンプト」と表示されています。結果は変化なく同様のエラーとなります。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/10/27 08:04
  • 皆様ご親切にご指導いただきありがとうございました。結局SelenimuBasicを再インストールすることによりchromedriverの保存場所が書込みのできる場所に変更されました。
    ありがとうございました。

      補足日時:2023/10/28 18:24

A 回答 (7件)

なぜ、その必要があるのかを説明されたほうが


よいと思います。
Cドライブは起動ドライブであり、そこに正体不明の
実行形式ファイルがおかれる事はWindowsの設計者も
想定していません。
30年ほど前には普通だった行為ですけど
今となっては危険な行為と
Windowsからみなされていると思うのです。
    • good
    • 1
この回答へのお礼

ご指導ありがとうございます。yokomaya様のおっしゃる通りだと思います。
やりたいことは、かってに更新されるchromeと同じバージョンのdriverをダウンロードして所定のパスに上書き保存します。
VBAでDLして解凍するまではうまくいきましたが、保存する際にこの問題に遭遇しました。
Driverの所定の位置がC:\Program Files\SeleniumBasic\chromedriver.exe
なのです。

お礼日時:2023/10/27 15:59

ご察しの通り通常C:直下にファイルコピーや削除などはできません


Cドライブ直下にディレクトリを作りその中にコピーする方が管理的に良いと思います
がC直下にコピーする場合 VBAなら
FileCopyではなくShell.ApplicationのShellExecuteから管理者権限でコマンドプロンプトを実行することで可能と思います(一例)
(FileCopyの場合 VBA実行ブック自体に管理者権限を与え開いて使うなんて方法もアリかもです未検証)

ざっくりこんな感じ(コピーオプションや戻り値が欲しい場合改造が必要)
Sub test()
Dim Shl As Object
Set Shl = CreateObject("Shell.Application")
Dim cmd As String
cmd = "copy D:\◆◆.exe C:\◆◆.exe"
Call Shl.ShellExecute("cmd.exe", "%ComSpec% /c" & cmd, , "runas", 5)
Set Shl = Nothing
End Sub

(アラートが出ます)
通知は手動でユーザアカウント制御の設定で通知しないを設定すれば
アラートを出さないようできます
(VBAでRegを触るのはやめておいた方が良いです)
    • good
    • 0
この回答へのお礼

ご指導ありがとうございます。
Qchan1962様にご提示いただいたPGで試してみましたがだんだんわけがわからなくなってきました。(笑)
Sub TEST()
Dim Shl As Object
Set Shl = CreateObject("Shell.Application")
Dim cmd As String
'cmd = "copy D:\◆◆.exe D:\P\◆◆.exe"  '① 〇
cmd = "copy D:\◆◆.exe C:\◆◆.exe" '② 〇
'cmd = "copy D:\◆◆.exe C:\Program Files\◆◆.exe" ’③×
'cmd = "copy D:\◆◆.exe C:\Program Files\SeleniumBasic\◆◆.exe" '④ ×

Call Shl.ShellExecute("cmd.exe", "%ComSpec% /c" & cmd, , "runas", 5)
Set Shl = Nothing
End Sub

やりたいことは④なのですが、①②までしか成功しません。③④はエラーはでませんがコピーはできていませんでした。

お礼日時:2023/10/27 15:23

ユーザーアカウント制御によって"C:\"へのアクセスは制限されているのでエラーになります。

VBAでいじられては困るからです。どうしてもというのならユーザーアカウント制御の設定を変更することでコピーできるようになりますが推奨されません。

設定変更するなら方法は以下にあります。
https://faq.nec-lavie.jp/qasearch/1007/app/servl …
    • good
    • 0

copy D:\aaa.exe C:\Program Files\


これでaaa.exe ファイルを Cドライブのprogramfilsのディレクトリの下にコピーされます。
ディレクトリを指定すればどの様になりますか。
    • good
    • 0
この回答へのお礼

度々のご指導ありがとうございます。結果は今まで同様にパス名が無効です。とエラー表示されます。

お礼日時:2023/10/27 12:35

DIR コマンドでCドライブに移れますか。


Cドライブからやるとどの様になりますか。
    • good
    • 0
この回答へのお礼

度重なるご指導ありがとうございます。
「DIR コマンドでCドライブに移る」ということは、コマンドプロンプトC:¥>の状態になるということでしょうか。
その状態でVBAを実行しても同じ結果でした。
またVBAの中で最初にDir ("C:\")をいれても結果は同じでした。

お礼日時:2023/10/27 09:16

「コマンドプロンプト」を右クリックするとサブメニューが表示されますのでその中の「その他」をクリックし、さらに表示されたサブメニューの中から「管理者として実行」をクリックして下さい。

この回答への補足あり
    • good
    • 0
この回答へのお礼

ご教示ありがとうございます。
しかし状況に変化はなく同じエラーがでます。

お礼日時:2023/10/27 08:00

DOSを管理者権限で実行してください。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A