“权限被拒绝”尝试在Windows 10上运行Python

2024-09-30 08:33:41 发布

您现在位置:Python中文网/ 问答频道 /正文

Windows 10上的更新似乎一夜之间就打破了Python。只是尝试运行python --version返回了一个“权限被拒绝”错误。三次更新都没有;KB4507453、KB4506991或KB4509096看起来可能是罪魁祸首,但问题发生的时间令人怀疑。我希望有一个更简单的解决方案,我没有错过,而不是忙于回滚

python上的权限是“-rwxr-xr-x”,在安装了昨晚的补丁程序之后,除了让Windows update重新启动机器之外,我没有做任何更改

根据系统信息,我正在运行10.0.18362

还应该注意,无论我(尝试)是否使用“以管理员身份运行”从git bash执行Python,都会发生这种情况,如果我尝试使用PowerShell,它只会打开Windows应用商店,就好像没有安装应用程序一样,因此我想出于某种原因,它无法看到我的/c/Users/david/AppData/Local/Microsoft/WindowsApps/文件夹的内容

我还尝试重新安装Python3.7.4,但也没有帮助。还有什么我应该看的吗


Tags: 程序机器权限versionwindows系统错误时间
3条回答

这似乎是git bash中的一个限制。使用winpty python.exe的建议对我有效。更多信息见Python not working in the command line of git bash

据我所知,这是由于与最近添加到Windows应用商店中的Python3.7版本发生冲突造成的。看起来这在%USERPROFILE%\AppData\Local\Microsoft\WindowsApps文件夹中添加了两个名为python.exe和python3.exe的“存根”,在我的例子中,这是在PATH中现有python可执行文件的条目之前插入的

将此条目移动到正确的Python文件夹下(部分)可以更正此问题

纠正它的第二部分是在Windows搜索提示符中键入manage app execution aliases,并完全禁用Python的存储版本

manage app execution aliases

您可能只需要执行第二部分,但在我的系统上,我做了两项更改,现在一切都恢复正常

研究

%USERPROFILE%\AppData\Local\Microsoft\WindowsApps中的所有文件都是占位符,它们指向实际位于C:\Program Files\WindowsApps中某处的文件,而这些文件恰好被完全拒绝了权限

看来我在这个问题的副本中所作的陈述是正确的:

"Seems like they didn't really think about the distribution method screwing with permissions!"

资料来源:Cannot install pylint in Git Bash on Windows (Windows Store)

由于WindowsApps的分发方法,权限被严重破坏:

enter image description hereenter image description hereenter image description here 有趣的是,它说“用户”组可以读取和执行文件,以及我的特定用户,但Administrators组只能列出文件夹内容,这是因为一些可笑的、深不可测的原因。当试图访问文件资源管理器中的文件夹时,它甚至拒绝显示文件夹内容,所以这也有点可疑

有趣的是,尽管在CMD中执行python效果很好,“WindowsApps”文件夹在列出其所在目录中的文件时不会显示,并且尝试导航到该文件夹会生成“权限被拒绝”错误:

enter image description here

试图更改权限需要先更改所有者,因此我将所有者更改为Administrators组。之后,我尝试更改Administrators组的权限以包含完全控制,但它无法更改,因为“访问被拒绝”(duh,Micro$ucks,这就是我们试图更改的!)

enter image description here

此权限错误发生在太多文件上,因此我使用Alt+C在重复消息上快速单击“继续”,但这仍然花费了太长时间,因此我取消了此过程,导致弹出此警告消息:

enter image description here

现在我无法将TrustedInstaller用户重新设置为WindowsApps文件夹的所有者,因为它不显示在用户/组/内置安全原则/其他对象列表中。*

enter image description here

*实际上,根据this tutorial,您可以通过在对象名称文本框中键入NT Service\TrustedInstaller将所有者交换回TrustedInstaller

解决方案

没有解决办法。基本上,我们完蛋了。优雅的移动,微软

相关问题 更多 >

    热门问题