Windows10でPythonを実行しようとしている「アクセスが拒否されました」


120

Windows10のアップデートが一夜にしてPythonを壊したようです。実行しようとするとpython --version、「PermissionDenied」エラーが返されました。3つの更新はありません。KB4507453、KB4506991、またはKB4509096が原因のように見えますが、問題のタイミングが疑わしいです。ロールバックをいじるのではなく、私が見逃しているより簡単な修正があることを望んでいます。

Pythonのアクセス許可は「-rwxr-xr-x」であり、昨夜のパッチをインストールした後、WindowsUpdateにマシンを再起動させる以外は何も変更していません。

システム情報によると、私は10.0.18362を実行しています

これは、「管理者として実行」を使用してgit-bashからPythonを実行しようとしているかどうかに関係なく発生し、PowerShellを使用しようとすると、アプリがインストールされていないかのようにWindowsストアが開かれることに注意してください。/c/Users/david/AppData/Local/Microsoft/WindowsApps/なんらかの理由でフォルダの内容が表示されないと思います。

Python 3.7.4も再インストールしようとしましたが、それも役に立ちませんでした。他に見なければならないことはありますか?


おそらくマイクロソフトのウェブサイトをチェックする価値があります。私はどこかで読んだ、申し訳ありませんが、他の人がこのアップデートで問題を抱えていた場所を思い出せません-空白の画面だと思います。とにかく、彼らが1日か2日でそれを修正するまで待つことは答えであることがわかるかもしれません。
Antの

ところで、「Pythonのパーミッションは '-rwxr-xr-x'です」は、Windowsではおそらく無意味です。これは、MSYS2やgit-bashなどのUnixライクな環境によって報告された偽物です。
ErykSun19年

いいえ。これはpython.orgのPythonパッケージです。同じことが何年も問題なく機能していて、最新のWindowsパッチで動作を開始したばかりです。
notanumber

解決策を見つけましたか?同じ問題があります。
シャンクス

残念だけど違う。Dockerでほとんどの作業を行っているので、私はそれと一緒に暮らしています。もしそうなら、私は私の発見を必ず投稿します!
notanumber

回答:


199

私の知る限り、これは最近Windowsストアに追加されたPython3.7のバージョンとの競合が原因でした。これにより、python.exeとpython3.exeという2つの「スタブ」が%USERPROFILE%\AppData\Local\Microsoft\WindowsAppsフォルダーに追加されたようです。私の場合、これは、の既存のPython実行可能ファイルのエントリのに挿入されましたPATH

このエントリを正しいPythonフォルダの下に(部分的に)移動すると、問題が修正されました。

それを修正する2番目の部分はmanage app execution aliases、Windowsサーチプロンプトに入力し、Pythonのストアバージョンを完全に無効にすることです。

アプリ実行エイリアスを管理する

2番目の部分だけを実行する必要がある可能性がありますが、私のシステムでは両方の変更を行い、すべてが正常に戻りました。


56
(ここではマイクロソフトの従業員とCPythonコア開発者)あなたは間違いなく2番目の部分を行う必要があるだけです。エイリアスをリセットするアプリのアップグレードに関連するバグがいくつかありますが、これらは次の安定したアップデートで修正されるため、それまでに1回限りの修正になるはずです。Insidersの更新を取得している間、さらに数回実行する必要がある場合があります。
ズーバ

9
また、「Access Denied」の問題は、Git Bashのバグです(または、Bashポートを維持している人は誰でも...誰なのかわかりません)。また、ストアの起動は、Pythonのインストールを支援する新機能です。通常のインストーラーを使用してPATHに追加した場合は、新しいリダイレクタよりも優先されますが、そうでない場合は、無効にする方法を上で発見しました。
ズーバ

5
この問題を解決するために、2番目の部分に進む必要がありました。
kennyB

6
私の場合、Pythonを見つけるためにgit bashのパス(C:\ Users \ YourUsernameHere \ AppData \ Local \ Programs \ Python \ Python37)にPythonを追加する必要がありました
Niels

2
Neilsが行ったように、それを私のパスに追加して一番上に移動することが私の解決策でした。Windowsストアスタブのスタブの名前を変更できないという事実はかなり厄介です。
ジョンW.クラーク

25

研究

内のすべてのファイル%USERPROFILE%\AppData\Local\Microsoft\WindowsAppsは、実際にはのどこかにあるファイルを指すプレースホルダーでありC:\Program Files\WindowsApps、アクセス許可は完全に拒否されます。

この問題の複製で行われた私の声明で、私は正しい方向に進んでいたようです。

「彼らは許可をめちゃくちゃにする配布方法について本当に考えていなかったようです!」

出典:WindowsのGit Bashにpylintをインストールできません(Windowsストア)

WindowsAppsの配布方法が原因で、アクセス許可が大幅に台無しになっています。

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください 興味深いことに、「Users」グループは私の特定のユーザーと同様にファイルを読み取って実行できると書かれていますが、Administratorsグループはいくつかの陽気に計り知れない理由でフォルダの内容を一覧表示することしかできません。また、ファイルエクスプローラーでフォルダーにアクセスしようとすると、フォルダーの内容も表示されないため、それについても何かおかしなことがあります。

興味深いことに、pythonCMDでの実行は問題なく機能しますが、「WindowsApps」フォルダーは、それが存在するディレクトリ内のファイルを一覧表示するときに表示されず、フォルダーに移動しようとすると「アクセスが拒否されました」エラーが生成されます。

ここに画像の説明を入力してください

権限を変更するには、最初に所有者を変更する必要があるため、所有者をAdministratorsグループに変更しました。その後、Administratorsグループの権限を変更してフルコントロールを含めようとしましたが、「アクセスが拒否された」ため、これを変更できませんでした(Micro $ ucks、これを変更しようとしています)。

ここに画像の説明を入力してください

この権限エラーは非常に多くのファイルで発生したため、Alt + Cを使用して繰り返しメッセージで[続行]をクリックしましたが、それでも時間がかかりすぎたため、プロセスをキャンセルしたため、次の警告メッセージがポップアップ表示されました。

ここに画像の説明を入力してください

そして今、TrustedInstallerユーザーをWindowsAppsフォルダーの所有者として戻すことができません。これは、ユーザー/グループ/組み込みのセキュリティ原則/その他のオブジェクトのリストに表示されないためです。*

ここに画像の説明を入力してください

*実際、このチュートリアルによればNT Service\TrustedInstaller、オブジェクト名のテキストボックスに入力することで、所有者をTrustedInstallerに戻すことができます。

解決

解決策はありません。基本的に、私たちは完全にねじ込まれています。上品な動き、マイクロソフト。


11
(Microsoftの従業員とCPythonコア開発者はこちら)現在、この場所で実行可能ファイルを起動できるWindowsでの修正に取り組んでいるバグがありますが、グローバルエイリアスが有効になっている場合に限ります([アプリ実行エイリアスの管理]で)。現在のユーザーのアプリをインストールするだけでよいように変更しようとしています。
ズーバ

4
このダイアログを介してアクセス許可を読み取ることができます。これは、管理者アクセスで実行されているdllhost.exeインスタンス(セキュリティシェル拡張機能rshx32.dllをホストしている)によって所有されているため、「フォルダーの内容の一覧表示」アクセス(つまり、実行、同期、および読み取り)があります。データ、属性、およびアクセス許可)。ユーザーグループのエントリは、通常のアクセスチェック用ではありません。これは、WIN:// SYSAPPIDセキュリティ属性、つまり任意のアプリの存在を条件としています。各アプリのサブフォルダーはユーザーに読み取りアクセスを許可しますが、実行アクセスは、カスタムアクセストークンを設定するアプリリンクを介して実行することを条件とします。
ErykSun19年

@ErykSunこれは、Windowsの実行とアクセス許可について私が今まで見た最初の情報に基づく回答です。ありがとう。
ライアン

私は実際には、フォルダーのアクセス許可を変更しようとすることによるフォールアウトにまだ対処しています。特定のWinAppは、次の指示に従うまで完全に起動を停止しました:(superuser.com/questions/1288014/…)が、起動時にエラーメッセージが表示されるようになりました。古いWin10USBイメージを使用したため、アクセス許可が正しく設定されていない可能性があります。
ライアン

1
@MarkSimpsonは、このスレッドが役に立ったことをうれしく思います。私が何を書いたのかわからない。ここのコメントに本当の答えを投稿してくれたマイクロソフトの従業員に必ず感謝してください。
ライアン


12

この問題はあまりにも一般的すぎて、まだ解決できません。そして、ほとんどの答えと指示はそれに対処することができません。Windows10で行うことは次のとおりです。

  1. environment variables開始検索バーに入力し、[システム環境変数の編集]を開きます。

  2. [環境変数...]をクリックします。

  3. [システム変数]セクションで、キーPathを使用して変数を見つけ、ダブルクリックします。

  4. Pythonファイルを指すパスを探します。おそらくありません。ある場合は、それらを選択して削除します。

  5. Python実行可能ファイルへのパスに設定された新しい変数を作成します。通常、これはC:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38です。ファイルエクスプローラーで確認して、これを確認してください。

    表示されAppDataない場合は、非表示のアイテムの表示を有効にしていないためです。[表示]タブをクリックして、[非表示のアイテム]チェックボックスをオンにします。

  6. Scriptsディレクトリを指す別の変数を作成します。通常はC:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scriptsです。

  7. 端末を再起動し、タイピングをしてみてくださいpypythonpython3、またはpython.exe


5

これはPowerShellの解決策ではありませんが、MINGW64を除いて同じ問題が発生しました。ターミナルとしてWindowsSubsystem for Linux(とにかくやりたかった)に切り替えることで、一般的にはVSCodeでそれを回避しました。この投稿はそれをよく説明しています:

Ubuntuアプリをターミナルとして使用するようにVSCode(Windows)を構成する方法

要約すれば:

1)Windows AppStoreからUbuntuをインストールします

2)デフォルトのbashをCMD-> wslconfig / setdefaultUbuntuから変更します

--- VSCodeの場合

3)VSCodeを再起動します

4)VSCodeで、「terminal.integrated.shell.windows」を「C:\ WINDOWS \ System32 \ bash.exe」に変更します(詳細については、上記の投稿を参照してください)

VSCodeとWSL(Windows上のUbuntuのBash)でスムーズに実行されるようになりました。少なくともあなたにとっては一時的な解決策かもしれません。



2

私にとって、manage app execution aliasespython3はコマンドではないというエラーが発生したので、py代わりに使用しましたがpython3、機能しました

なぜこれが起こっているのか分かりませんが、それは私のために働きました


1

最も簡単な方法は、PATHおよびPYTHONPATH環境変数を変更して、適切なPythonバイナリを含むフォルダーがローカルのWindowsAppフォルダーで検索されるようにすることです。コントロールパネルを開いて「env」を検索すると、環境変数にアクセスできます。


1

回避策:exeからpythonをインストールした場合は、以下の手順に従ってください。

ステップ1:Pythonをアンインストールする

ステップ2:pythonをインストールし、以下のscreentshot(黄色)で強調表示されているようにPythonパスチェックボックスをオンにします。

これで問題は解決しました。

ここに画像の説明を入力してください


1

これは、Windowsアプリ実行エイリアスがGit-Bashで機能する方法によるものです。

これは、MSYS2 がWindowsの再解析ポイントにアクセスできないという既知の問題です。IO_REPARSE_TAG_APPEXECLINK

回避策として、内部で使用する関数呼び出しにエイリアスを設定できますcmd.exe

以下を~/.bashrcファイルに追加します::

function python { cmd.exe /c "python $1 $2 $3";}

Pythonの場合は、受け入れられた回答のようにアプリ実行エイリアスをオフにすることをお勧めしwingetますが、のようにWindowsストアを通じて排他的に配布されるライブラリの場合、これが最善のオプションです。

参考文献


-1

管理者権限でコマンドプロンプトを開いてみてください。(管理者として実行)。ほとんどの場合、私のために働きます。


3
Python実行可能ファイルは、管理者権限がなくてもCMDで機能します。問題は、プログラマーにとって不可欠なツールであり、デフォルトであるGit Bashでは機能せず、Pythonの他のすべての配布方法でも機能することです。つまり、ここでも機能する必要があります。
ライアン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.