もくじ
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