Python .py 文件缺少以管理员身份运行

Python .py 文件缺少以管理员身份运行

我一直遇到一个令人沮丧的错误:

我得到的每一个其他应用程序我都可以右键单击它并获得此(涂黑了一些个人信息。):

截屏。

以管理员身份运行显然是可以的,而且工作正常,但当涉及到.py 文件时,我得到了这个:

截屏。

由于某种原因,无法以管理员身份运行。

答案1

您可以修改注册表,将 Python 文件的以管理员​​身份运行选项添加到上下文菜单中。

具体操作如下:

步骤1:打开提升的 PowerShell:

Win+ →R类型powershellCtrl++ShiftEnter

第2步:粘贴这些命令:

$python=where.exe Python.exe
cmd /c "assoc .py=Python.File"
cmd /c $('ftype Python.File="{0}" "%1" "%*"' -f $python)
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
Set-ItemProperty -Path "HKCR:\.py" -Name "(Default)" -Type String -Value "Python.File"
Set-ItemProperty -Path "HKCR:\.py" -Name "Content Type" -Type String -Value "text/plain"
New-Item -Path "HKCR:\Python.File\shell" -ErrorAction SilentlyContinue | Out-Null
New-Item -Path "HKCR:\Python.File\shell\runas" -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKCR:\Python.File\shell\runas" -Name "(Default)" -Type String -Value "Run as Administrator"
Set-ItemProperty -Path "HKCR:\Python.File\shell\runas" -Name "HasLUAShield" -Type String -Value '""'
New-Item -Path "HKCR:\Python.File\shell\runas\command" -ErrorAction SilentlyContinue | Out-Null
$Command='cmd.exe /S /K "{0}" \"%1\" %*' -f $python.replace("\","\\")
Set-ItemProperty -Path "HKCR:\Python.File\shell\runas\command" -Name "(Default)" -Type String -Value $Command
Set-ItemProperty -Path "HKCR:\Python.File\shell\runas\command" -Name "DelegateExecute" -Type String -Value '""'

那么工作就完成了,享受吧。


第一行使用 where.exe 来查找 Python.exe 的位置,如果 Python.exe 在 PATH 环境变量中,问题是如果有多个 Python.exe,它的结果就不是一行字符串,而是多行,尝试运行:

where.exe Python.exe 

要检查是否有多行,如果只有一行,请使用:

$Python=where.exe Python.exe

如果有多行,则使用:

$Python=where.exe Python.exe | Select-Object -First 1

或者手动提供所需 Python 的路径,例如:

$Python="C:\Program Files\Python39\Python.exe"

请注意,您可以使用 where.exe 获取其路径,并且在 PowerShell 中,即使字符串不包含空格,也必须使用引号。

第二行和第三行修复了 .py 文件的 openwith 关联,问题是 assoc 和 ftype 是 cmd 命令,而 C:\Windows\System32 中没有它们的可执行文件,因此最安全的方法是使用 cmd /c 来运行它们,但是我使用的是 PowerShell 7.1.1,我依稀记得曾经成功使用过其中一个没有 cmd /c 部分,请运行:

Test-Path C:\Windows\System32\assoc.exe
Test-Path C:\Windows\System32\ftype.exe

告诉我哪一个是可执行文件,如果 Test-Path 返回 True 则该文件存在,否则返回 False,这意味着可执行文件不存在并且是 cmd.exe 的内置函数。

很抱歉,但我现在和接下来的一周都无法使用电脑,所以我无法测试我的代码,我写这篇文章时使用的是 Android 手机,因为我要去乡下的外公外婆家过农历新年,我现在所在的地方没有电脑。


我猜你在 $Env:Path 中只有一个 Python.exe,因为 (where.exe Python.exe)[0] 的结果是 [System.Char],而且我猜它的值是 C,尝试运行:

(where.exe Python.exe)[0]

要说我是否正确,这是出乎意料的,但如果只有一行,那么它就是一个 [System.String] 对象,如果有多行,那么结果就是一个 [Array],特别是 [String[]],括号在 PowerShell 中有多重含义,这里它与 [0] 一起使用,明确地表示 [Array] 中的第一个元素(程序使用 0 作为索引的开头而不是 1),因此括号内的内容被视为 [Array],因为只有一个字符串,它被转换为 [System.Char] 数组 [Char[]] 以使其可索引。

答案2

请尝试以下步骤:

  1. 为 python.exe 创建快捷方式

  2. 将快捷方式目标更改为其他内容

    例如 d:\xxx...\python.exe (your_script.py)(你的文件路径)

  3. 单击快捷方式属性面板中的“高级...”,然后单击选项“以管理员身份运行”

相关内容