【发布时间】:2017-04-20 09:21:22
【问题描述】:
我希望得到文件夹的大小
C:\ProgramData\
我使用下面的代码
public static long GetDirectorySize(string folderPath)
{
DirectoryInfo di = new DirectoryInfo(folderPath);
return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}
但它提示我错误:
An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll
Additional information: Access to the path 'C:\ProgramData\Application Data' is denied.
我已经设置好了
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
在 app.manifest 中。似乎即使我直接在 Windows 中打开 C:\ProgramData\Application Data 它也被拒绝了。
如何解决这个问题?
【问题讨论】:
-
那条路径是一个系统连接点,对你来说并不是真的有用。您应该使用
%AppData%代替C:\Users\<you>\AppData\Roaming作为路径。或者将%LocalAppData%用于C:\Users\<you>\AppData\Local。也可以使用%UserProfile%\AppData获取C:\Users\<you>\AppData -
您的管理员用户是否拥有“完全控制”权限?
-
您是否尝试过使其成为完全信任的应用程序? (项目的)属性-> 安全性-> 启用单击一次安全性-> 选择完全信任应用程序
-
你能进入bin文件夹然后以管理员身份打开吗?这不是解决方案,但有助于定位问题。您可以使用msdn.microsoft.com/en-us/library/… 发出某种警告
-
@Heki
%ProgramData%!=%AppData%
标签: c#