使用本地系统帐户运行时,GetAccessControl 方法失败,出现意外错误代码 3



我创建了Windows服务并使用本地系统帐户运行它。此服务正在读取用户文件并查找其所有者。在获取文件的访问权限以查找所有者时,它会抛出以下异常:

方法失败,出现意外错误代码 3。

StackTrace : at System.Security.AccessControl.NativeObjectSecurity.CreateInternal(ResourceType 资源类型, 布尔是容器, 字符串名称, 安全句柄, AccessControlSections includeSection, Boolean createByName, ExceptionFromErrorCode exceptionFromErrorCode, Object exceptionContext( at System.Security.AccessControl.FileSystemSecurity..ctor(布尔值( isContainer, String name, AccessControlSections includeSection, 布尔值是目录( 在 System.Security.AccessControl.FileSecurity..ctor(字符串文件名, 访问控制部分包括部分(

下面是我用来获取文件所有者的示例 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 方法总是失败

请帮助我,因为我正面临一堆用户的这个问题,并且它正在为其他用户工作。

我在Directory.GetAccessControl(string)遇到了类似的问题。 我的问题是作为参数传递的文件夹不存在。

您的参数名称将表明该文件已找到,但在调用File.GetAccessControl()之前,您可能会从File.Exists(string)中受益。至少确保文件夹/文件在运行时存在。

最新更新