修正:別のプロセスによって使用されているため、プロセスはファイルにアクセスできません

一部のWindowsユーザーは、「プロセスはファイルが別のプロセスで使用されているため、ファイルにアクセスできません」というエラーが発生しています。ほとんどの場合、この問題はユーザーがnetshコマンドを実行しようとしたときに発生します。一部のユーザーは、IIS(インターネットインフォメーションサービス)MMC(Microsoft管理コンソール)スナップインでWebサイトを右クリックしようとすると、エラーメッセージが表示されると報告しています。

この問題は、Windows Vista、Windows 7、Windows 8.1、Windows 10、およびさまざまなバージョンのWindows Serverで発生することが報告されています。

プロセスが別のプロセスによって使用される原因は何ですか?

この問題を調査するために、さまざまなユーザーレポートと、問題を解決するためにユーザーが使用した修復戦略を調べました。収集できたことに基づいて、この特定のエラーメッセージをトリガーするいくつかの一般的なシナリオがあります。

  • コマンドには管理者権限が必要です–端末内でエラーが発生した場合は、変更を行うための管理者権限がないことが原因と考えられます。同様の状況にある複数のユーザーが、管理者権限を付与することで問題を解決できました。
  • 別のプロセスは、ポート80またはポート443を使用しています。これは、IIS(インターネットインフォメーションサービス)を実行しているコンピューターで一般的です。別のプロセスがこれらの2つのポートを使用している場合、このエラーメッセージが表示されます。
  • ListenOnlyListレジストリサブキーが正しく構成されていない –この特定のエラーをトリガーするIIS(インターネットインフォメーションサービス)のもう1つの一般的なシナリオは、正しく構成されていないListenOnlyListレジストリサブキーです。

現在、この特定のエラーメッセージの解決に苦労している場合、この記事では、検証済みのトラブルシューティング手順のコレクションを提供します。以下に、同様の状況の他のユーザーが問題を解決するために使用した一連のメソッドがあります。

最良の結果を得るには、特定のシナリオでエラーを解決するのに効果的な修正が見つかるまで、以下の方法を順番に実行してください。

さぁ、始めよう!

方法1:管理者権限でコマンドを実行する

netshコマンドを実行しようとしたときにこのエラーが発生した場合は、管理者権限がないためにエラーが発生している可能性があります。これは、ネイティブのWindowsアプリまたはサードパーティのアプリケーションの動的ポート範囲に除外を追加するコマンドをユーザーが実行しようとしたときに、頻繁に発生すると報告されています。

この種の操作には管理者権限が必要であることを覚えておいてください。アクションを実行しようとしているCMDウィンドウに管理者権限があることを確認するには、次の手順に従います。

  1. 押してWindowsキー+ Rは、ファイル名を指定して実行]ダイアログボックスを開きます。次に、「cmd」と入力し、Ctrl + Shift + Enterキーを押して、管理者特権のコマンドプロンプトを開きます。
  2. UAC(ユーザーアカウント制御)のプロンプトが表示されたら、[ はい ]をクリックして管理者権限を付与します。
  3. 管理者特権のコマンドプロンプトでコマンドを再度実行し、同じエラーメッセージが引き続き表示されるかどうかを確認します。

それでも「プロセスはファイルにアクセスできません。別のプロセスが使用しているため、ファイルにアクセスできません」というエラーが表示される場合、またはこのシナリオが該当しない場合は、下の次の方法に進んでください。

方法2:別のIP範囲を設定する

netshを使用してDNSの競合を解決しようとしていて、上記の方法で問題が解決しない場合は、別の方法を試してください。

同じエラーメッセージを解決するのに苦労しているいくつかのユーザーは、除外範囲を作成するのではなく、完全に異なるIP範囲を設定しようとした後に競合が解決されていることを発見しました。

以下は、DNSとクイックブックの競合を解決するために影響を受けた1人のユーザーが正常に実行したいくつかのコマンドです。

netsh int ipv4 set dynamicport tcp start=10000 num=1000 netsh int ipv4 set dynamicport udp start=10000 num=1000

注:コマンドを実行している端末に管理者権限があることを確認してください。

この方法で競合が解決されなかった場合、または発生している状況に該当しない場合は、最後の方法に進んでください。

方法3:IISポートの競合を解決する

IIS MMCスナップイン内のWebサイトアイテムを右クリックしようとして問題が発生した場合([スタート]をクリックしても何も起こらない)、Netstat.exeユーティリティを使用して、別のプロセスがポート80とポート443を使用します。

この問題は、Microsoft IIS 6.0および7.0を実行しているコンピューターでは非常に一般的です。公式のMicrosoftドキュメントに基づいて、次の条件のいずれかが現在の状況に該当する場合、エラーメッセージが表示されます。

  • ListenOnlyListのレジストリサブキーは、コンピュータを実行しているIISで正しく設定されていません。
  • 別のプロセスは、IISに必要なTCPポート(80)またはSSLポート(443)を使用しています。

この問題を解決するには、Netstat.exeユーティリティを展開して、別のプロセスが上記で指定されたポートを使用しているかどうかを確認する必要があります。ユーティリティがポートが使用されていないと判断した場合、ListenOnlyListサブキーを調べて、正しく構成されているかどうかを確認します。

以下は、全体の詳細なガイドです。

  1. 押してWindowsキー+ Rは、ファイル名を指定して実行]ダイアログボックスを開きます。次に、「cmd」と入力し、Ctrl + Shift + Enterキーを押して、管理者特権のコマンドプロンプトを開きます。UAC(ユーザーアカウント制御)のプロンプトが表示されたら、[ はい ]をクリックして管理者権限を付与します。
  2. 管理者特権のコマンドプロンプト内で、次のコマンドを実行してNetstat.exeユーティリティを起動します。
    netstat -ano
  3. 戻ってきたら、アクティブ接続のリストをスクロールして、ポート50と443が別のプロセスでアクティブに使用されているかどうかを確認します。

    注:ポートが別のプロセスによってアクティブに使用されている場合、問題の原因を特定できました。この場合、オンラインでポートのPIDに従ってポートの競合を解決する方法の特定の手順を探してください。

  4. 次の手順では管理者権限は必要ないため、管理者特権のコマンドプロンプトを閉じます。
  5. ポートがアクティブに使用されていない場合は、Windowsキー+ Rを押して[実行]ダイアログボックスを開きます。次に、「regedit」と入力してEnterキーを押し、レジストリエディタを開きます。UAC(ユーザーアカウント制御)のプロンプトが表示されたら、[ はい ]をクリックして管理者権限を付与します。
  6. レジストリエディタ内で、左側のペインを使用して次の場所に移動します。
    HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ HTTP \ Parameters \ ListenOnlyList

    注:ListenOnlyListサブキーが存在しない場合は、IPアドレス0.0.0.0がデフォルトで使用されるため、サブキーを作成する必要はありません。

  7. 先に進み、ListenOnlyListサブキーを変更する前に、IISを実行しているHTTPサービスを停止する必要があります。レジストリエディターをバックグラウンドに置いて、すぐに戻ります。
  8. 次に、Windowsキー+ Rキーを押して[ ファイル名を指定して実行]ダイアログボックスを開き、「cmd」と入力してEnterキーを押し、別のコマンドプロンプトウィンドウを開きます。
  9. Cmdプロンプトで次のコマンドを実行し、Enterキーを押して、IISの実行を担当するHTTPサービスを停止します。
    ネットストップhttp
  10. この操作を続行するかどうかを尋ねられたら、「Y」と入力してEnterキーを押し、操作を確認します。
  11. HTTPサービスが無効になったら、コマンドプロンプトウィンドウを閉じて、レジストリエディターに戻ります。
  12. ListenOnlyListのサブキーを選択し、右側のペインに上に移動し、それが有効なIPアドレスが含まれていることを確認してください。無効なIPアドレスを見つけた場合は、それを削除するか、有効なIPアドレスのエントリを反映するように変更します。

    注:場合、ListenOnlyListのサブキーが存在し、0.0.0.0のアドレスが表示されて、あなたが他のすべてのIPアドレスを削除する必要があります。

  13. レジストリエディターを閉じ、コンピューターを再起動します。
  14. 次回の起動時に、HTTPサービスが自動的に開始されます。ただし、念のため、Windowsキー+ Rキーを押して、別の[実行]ダイアログボックスを開きます。次に、「cmd」と入力してEnterキーを押し、コマンドプロンプトウィンドウを開きます。
  15. 新しく開いたコマンドプロンプトで、次のコマンドを入力して、HTTPサービスが開始されていることを確認します。
    ネットスタートhttp

    注:「要求されたサービスは既に開始されています」というメッセージが返された場合は、問題ありません。

  16. Microsoftインターネットインフォメーションサービス(IIS)Microsoft管理コンソール(MMC)スナップインからサービスを開始してみます。「別のプロセスで使用されているため、ファイルにアクセスできません」というエラーは発生しなくなります。