用pipe理员身份运行创buildWindows资源pipe理器快捷

我正在使用win32com.client在Windows上创build一个快捷方式

from win32com.client import Dispatch shell = Dispatch("WScript.Shell") shortcut = shell.CreateShortCut(shortcut_path) # shortcut_path defined elsewhere shortcut.Targetpath = target_path shortcut.WorkingDirectory = working_directory # working_directory defined elsewhere shortcut.save() 

我想要使​​用“以pipe理员身份运行”checkbox创build快捷方式:

以管理员身份运行“快捷方式”复选框

是否有可能做到这一点使用python和win32com?

我在Windows 7 64位上使用python 3.5。

调用IShellLinkDataList接口的SetFlags方法以启用SLDF_RUNAS_USER

 import pythoncom from win32com.shell import shell, shellcon def create_link(link_path, target_path, description=None, directory=None, runas=False): link = pythoncom.CoCreateInstance( shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) link.SetPath(target_path) if description is not None: link.SetDescription(description) if directory is not None: link.SetWorkingDirectory(directory) if runas: link_data = link.QueryInterface(shell.IID_IShellLinkDataList) link_data.SetFlags(link_data.GetFlags() | shellcon.SLDF_RUNAS_USER) file = link.QueryInterface(pythoncom.IID_IPersistFile) file.Save(link_path, 0) def set_link_runas(link_path): link_data = pythoncom.CoCreateInstance( shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLinkDataList) file = link_data.QueryInterface(pythoncom.IID_IPersistFile) file.Load(link_path) flags = link_data.GetFlags() if not flags & shellcon.SLDF_RUNAS_USER: link_data.SetFlags(flags | shellcon.SLDF_RUNAS_USER) file.Save(link_path, 0) 

例:

 if __name__ == '__main__': import os import sys desktop_path = shell.SHGetFolderPath(0, shellcon.CSIDL_DESKTOP, 0, 0) profile_path = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, 0, 0) version = '.'.join(str(x) for x in sys.version_info[:3]) description = "Python %s" % version target_path = sys.executable # test 1 link_path = os.path.join(desktop_path, description + '(1).lnk') create_link(link_path, target_path, description, profile_path, True) # test 2 link_path = os.path.join(desktop_path, description + '(2).lnk') create_link(link_path, target_path, description, profile_path) set_link_runas(link_path)