Windows サービスを作成し、ローカル システム アカウントで実行しました。このサービスは、ユーザー ファイルを読み取り、その所有者を見つけています。ファイルのアクセス権を取得して所有者を見つけると、以下の例外がスローされます:
メソッドは予期しないエラー コード 3 で失敗しました。
StackTrace : System.Security.AccessControl.NativeObjectSecurity.CreateInternal(ResourceType resourceType、Boolean isContainer、文字列名、SafeHandle ハンドル、AccessControlSections includeSections、Boolean createByName、ExceptionFromErrorCode exceptionFromErrorCode、Object exceptionContext) at System.Security.AccessControl.FileSystemSecurity..ctor(Boolean System.Security.AccessControl.FileSecurity..ctor(String fileName, AccessControlSections includeSections) の isContainer、String name、AccessControlSections includeSections、Boolean isDirectory)
以下は、ファイルの所有者を取得するために使用しているサンプル C# コードです。
IdentityReference sid = null;
string owner = null;
FileSecurity fileSecurity = File.GetAccessControl(foundFile);
sid = fileSecurity.GetOwner(typeof(SecurityIdentifier));
NTAccount ntAccount = sid.Translate(typeof(NTAccount)) as NTAccount;
owner = ntAccount.Value;
foundFile には、ディレクトリから読み取られたファイル パスが含まれます。以下のリンクを通過しましたが、私の問題とは異なるようです: DirectoryInfo.GetAccessControl メソッドは常に失敗します
多くのユーザーでこの問題に直面しており、他のユーザーでも機能しているため、親切に助けてください。