特定のファイルをコピー/置換するだけで、クライアント コンピューター上のソフトウェアを更新する小さなユーティリティがあります。ファイルは、EXE と DLL の両方で構成されています。私たちの 1 つのクライアントを除いて、すべて正常に動作します。彼らは Active Directory ドメインを持っていますが (多くのクライアントがそうであるように)、すべてのコンピューターで DLL ファイルのコピーに失敗し、エラー コード 5 (アクセスが拒否されました) が表示されます。アプリケーションが管理者として実行されている場合でも、管理者としてコンピューターにログインしている間。XP、Vista、および 7 マシンのすべてで発生します。EXE ファイルは正常にコピー/置換されますが、DLL ファイルはコピー/置換されません。DLL が存在しない場合は、正常にコピーされます。ただし、交換が必要な場合は失敗します。
これらのファイルは、API 呼び出しを使用してコピーされます。
function CopyFile(lpExistingFileName, lpNewFileName: PWideChar; bFailIfExists: BOOL): BOOL; stdcall;
ソースは自己解凍型パッケージによって自動的に作成される一時フォルダーであり、宛先はソフトウェアがインストールされている場所です (レジストリ キーによって識別されます)。宛先は、最も一般的には C: ルートのディレクトリですが、Program Files (x86) やコンピューター上の他の場所でも発生します。彼らの IT 担当者は、これをブロックするためにドメインに構成された特別な設定はないと主張しています。これは、この問題を抱えている唯一のクライアントであり、20 台以上のコンピューターすべてで発生しています。ただし、Windows からファイルを手動でコピーすると、ファイルは問題なくコピー/置換されます。これらのファイルの属性を確認しましたが、非表示または読み取り専用ではありません。
適切なアクセスを確保するために他に何をする必要がありますか? 管理者として実行してもうまくいかないのでしょうか?