いじるのにシステム権限が必要なフォルダに、copyコマンドでファイルをコピーしたい(PeExec)

もくじ
https://tera1707.com/entry/2022/02/06/144447

やりたいこと

system32フォルダの中のさらに奥の方のフォルダなど、ファイルを貼り付けたりするためにシステム権限が必要になるようなフォルダに、windowsのコマンドのcopyでファイルを貼り付けたい。

※普段はそんな必要性が出てくることなどないのだが、ドライバーがおかしいので緊急避難的に、どうしても今だけファイルを貼り付けて回避する、みたいなことがあり、そういうことをしたかった。

やりかた

SysInternalsツールの一つであるPsExecを使う。

PsTools

https://learn.microsoft.com/ja-jp/sysinternals/downloads/pstools

準備

PsExecをダウンロードしてくる。

上のページの中の、PsExecのページでダウンロードする。

https://learn.microsoft.com/ja-jp/sysinternals/downloads/psexec

※2023/11/9 時点では、v2.43 らしい。

ここからダウンロードしたフォルダの中にある「PsExec.exe」と「PsExec64.exe」を、適切な場所にコピーする。

使うときは「PsExec.exe」をたたいてやれば、必要に応じて(64bit環境だったりしたら)「「PsExec64.exe」を呼び分けてくれるのかな?と思っている(あんまりわかってない)

使うときのコマンド

通常、ファイルをコピーしたいときのコマンドは、

copy "C:\Users\username\Desktop\dir1\file1.txt" "C:\Users\username\Desktop\dir2"

という感じにするが、そのコマンドを、PsExecに渡してあげるような感じにする。

PsExecのページによると、システム権限で起動させたいときのオプションは「-s」の様子。それを付けて下記のようにする。

psexec -s cmd /c copy "C:\Users\username\Desktop\dir1\file1.txt" "C:\Users\username\Desktop\dir2"

元のコマンドと比べて、今回加わったのが「psexec -s cmd /c」の部分。

psexecでコマンドを実行する、という意味。

psexec -s-s が、「システム権限でコマンド実行せよ」という意味。

cmd /c/cは、「後続する文字列で指定されたコマンドを実行後,終了する」という意味。

これを、管理者権限で実行しているコマンドプロンプトで実行すると、システム権限でファイルをコピーできる。 (バッチファイルにこれを書いて、バッチを管理者権限で実行する、でもOK)

備考

というのを仕事で教えて頂いたので、今自宅でこうやってメモしたのだが、自宅のPCの、操作するのにシステム権限が必要なフォルダになにかを試しにコピーする気にならなかった。

仕事でこれでうまくいってたはずなので、自宅では確認できてないが、これで良しとする。

参考

PsToolsのページ

https://learn.microsoft.com/ja-jp/sysinternals/downloads/pstools

PsExec のページ

https://learn.microsoft.com/ja-jp/sysinternals/downloads/psexec

cmd コマンド

https://xtech.nikkei.com/it/free/NT/WinKeyWord/20040805/1/cmd.shtml