現在オフラインです。再接続するためにインターネットの接続を待っています

ダウングレード OS 上のアクセス権のない共有フォルダをアクセスすると ERROR_ACCESS_DENIED 以外のエラーが返る

現象
ダウングレード OS 上のアクセス権のない共有フォルダに対して、ファイルやフォルダにアクセスする API を利用すると、アクセス拒否 (ERROR_ACCESS_DENIED) 以外のエラーで失敗することがあります。
また、この問題が発生する場合、以下の何れかのエラーコードが、API に通知されます。
・予期しないネットワークエラーが発生しました。(ERROR_UNEXP_NET_ERR)
・パラメータが間違っています。(ERROR_INVALID_PARAMETER)

アクセス権のチェックのために、ファイル I/O 系の関数のエラーコードに ERROR_ACCESS_DENIED が通知されることを想定した実装をしているアプリケーションでは、適切にアクセス権をチェックできないことがあり得ます。
原因
カーネル モードの SMB コンポーネントにおいて、STATUS_ERROR_ACCESS_DENIED となる I/O が発生した際に、STATUS_UNEXPECTED_NETWORK_ERROR を通知する場合があります。また、この通知を行う処理では、サブシーケンスの I/O も同時に行っており、このサブシーケンスで、STATUS_INVALID_PARAMETER を通知することがあります。

SMB コンポーネントが通知したステータスは、NT ステータスから Win32 エラーコードの変換に伴いユーザーモードのファイル I/O 系の関数 には、ERROR_UNEXP_NET_ERR もしくは ERROR_INVALID_PARAMETER として通知されます。
解決方法
アプリケーションの実装として、アクセス権のないファイルやフォルダにアクセスした結果、ERROR_UNEXP_NET_ERR もしくは ERROR_INVALID_PARAMETER が通知された場合、ERROR_ACCESS_DENIED に相当する処理を行うことで回避が可能です。
回避策
状況
詳細
関連情報
- 参考資料
[INFO] NT エラー コードを Win32 エラー コードへマッピングする
http://support.microsoft.com/kb/113996/ja
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2954571 - 最終更新日: 09/20/2016 11:04:00 - リビジョン: 1.0

Windows 8, Windows 8.1

  • KB2954571
フィードバック