pythonを管理者権限で実行するにはショートカットを作成して、管理者権限で実行すればいい。
そのため、pythonのスクリプトのショートカットを作成するスクリプトを作成した。
実行環境
- windows 10 home
- python 3.9
- pip 22.0.4
スクリプト
pip install pywin32
pip install winshell
make_shortcut.py
import os, sys, winshell
from win32com.client import Dispatch
def main():
if len(sys.argv) != 2:
return
# スクリプトの存在確認をする
target_path = sys.argv[1]
if os.path.isfile(target_path) is False:
return
save_path = target_path + ' - shortcut.lnk'
# python の場所を探す
python_work = None
paths = os.environ["PATH"].split(os.pathsep)
for path in paths:
if path.split(os.path.sep)[-2][:6] == 'Python':
python_work = path
python_path = path + 'python.exe'
break
# python_workの存在確認をする
if python_work is None:
return
# ショートカットを作成
shell = Dispatch('WScript.Shell')
shortcut = shell.CreateShortCut(save_path)
shortcut.Targetpath = python_path
shortcut.WorkingDirectory = python_work
shortcut.Arguments = target_path
shortcut.save()
if __name__ == '__main__':
main()
ハマったこと
参考文献にはmklnkとpylnkで作成する方法があったが、パスに日本語があると文字化けして正しいショートカットが作成できなかった。