2

我已经创建了 Windows 服务并使用本地系统帐户运行它。该服务正在读取用户文件并找到它的所有者。在访问文件以查找所有者时,它抛出异常:

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

StackTrace:在 System.Security.AccessControl.NativeObjectSecurity.CreateInternal(ResourceType resourceType, Boolean isContainer, String name, SafeHandle handle, AccessControlSections includeSections, Boolean createByName, ExceptionFromErrorCode exceptionFromErrorCode, Object exceptionContext) 在 System.Security.AccessControl.FileSystemSecurity..ctor(Boolean isContainer, String name, AccessControlSections includeSections, Boolean isDirectory) at System.Security.AccessControl.FileSecurity..ctor(String fileName, AccessControlSections includeSections)

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

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

4

1 回答 1

0

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

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

于 2021-02-09T13:45:19.947 回答