【发布时间】:2012-02-01 02:20:27
【问题描述】:
我安装了一个作为本地系统帐户的 Windows 服务,有时它会在机器上构建一个目录列表。它在 c:\users... 目录下的 Windows 7 上失败。我检查了这些文件夹,它们似乎受到系统帐户的完全控制。为什么我无法访问这些目录?
System.UnauthorizedAccessException: Access to the path 'C:\Users\Public\Documents\My Videos' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)
at System.IO.Directory.GetDirectories(String path, String searchPattern, SearchOption searchOption)
at LS.Core.Backup.DirectoryMapper.GetDirectories(String SeedDir, Int32 Count)
更新:
有关详细信息,请参阅下面的答案,但我也发布了我用来解决此问题的课程。见GitHub Gist - DirectoryHelper
【问题讨论】:
-
有
InnerException吗?请发布完整的异常跟踪。另外,你在调用什么函数?你的程序有什么特权? -
我已经添加了堆栈跟踪,不幸的是没有内部异常。我以 SYSTEM 帐户运行,所以不应该让我访问整个驱动器吗?
-
如果异常包含
HResult字段,请查看它是什么。从我从 MSDN 文档 (msdn.microsoft.com/en-us/library/system.exception.hresult.aspx) 中可以看出,它应该与本机 Windows 调用将返回的 HRESULT 相同。也正如 Grant H. 所说,尝试 Process Monitor。如果没有设置HResult,你可以从进程监视器中看到代码。
标签: c#