
この問題を特定するのに、私と当社の IT 部門は多くの時間を費やしました。
この問題は、Windows Server 2008、Windows 7、Windows 8 でのみ発生します。Windows XP または Windows Server 2003 では問題は発生しません。
当社では社内で開発したプログラムを使用しています。プログラムは正常に動作しており、問題はこのプログラムに固有のものではありません。
プログラムは、Web サービスを使用してコンピューター上で実行されている他のプログラムと通信するために localhost を使用します。問題は、プログラムがユーザーのホーム フォルダーにある場合、この通信が機能しないことです。
この原因を突き止めるのに多くの時間を費やした結果、ユーザーが実行可能ファイルへの UNC パス内のすべての親フォルダーにアクセスできる場合、問題は解消されることが最近わかりました。
したがって、ホーム ドライブが H: = \SomeServer\hdrive$\SomeUser にマウントされていて、ユーザーが \SomeServer\hdrive$ にアクセスできない場合、プログラムは TCP エラーを受け取り、Web サービスは動作しません。
ユーザーがそのパスで「フォルダーの内容の一覧表示」権限のみを取得した場合、Web サービスは機能します。
プログラムはそれ以外は正常に動作します。すべての dll ファイルが正常にリンクされ、その他のエラーが発生しないことを確認しました。
これは OS が行っていることのようです。なぜこのようなことが起こるのか知っている人はいますか?
答え1
Windows 7 以降では、特定のフォルダーがデフォルトで保護されています。これはセキュリティ上の理由によるものだと理解しています。つまり、プログラム A がプログラム B が使用する dll を密かに変更することが難しくなります。
多くの場合、問題のプログラムを右クリックして「管理者として」実行すると、問題なく動作することがわかりました。あなたのケースではそれが機能するかどうかはわかりません。