检查我的应用程序是否有权读取进程信息和读/写文件和目录

时间:2011-10-01 15:43:58

标签: c# .net process permissions

如果我有权限获取进程列表,终止进程,获取目录,获取目录中的文件,读取和写入文件等,如何检查我的C#应用​​程序?谢谢!

2 个答案:

答案 0 :(得分:4)

如果您有权限可以毫无问题地执行操作,如果缺少权限,您可以捕获异常并处理它(UnauthorizedAccessException等)。

答案 1 :(得分:2)

在.NET中,有两种方法可以做到这一点。

System.Security.Permissions namespace包含您需要的属性和类。您可以使用属性并编写声明性代码,或者使用带有命令性代码的类。

例如,对于FileIO,您可以这样做

Declarative : 通常,您会注释一个方法,并且基于SecurityAction异常被抛出的是当前或调用代码没有所述权限

[FileIOPermissionAttribute(SecurityAction.PermitOnly, 
           ViewAndModify = "C:\\example\\sample.txt")]

Imperative :您可以在此处以编程方式检查权限

FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
  f.Demand();
}
catch (SecurityException s)
{
  Console.WriteLine(s.Message);
}

命令式或声明式,您的代码必须对异常作出反应。 SecurityAction枚举解释了这些是如何工作的,有些检查当前代码是否有权限,有些也检查调用代码。这个枚举有相同的对应方法(Deny,Assert等),可以在命令式代码中使用。

最后,System.Security.Permissions namespace没有任何进程,所以我假设您无法真正检查权限。虽然它适用于.NET 1.1 this security article非常相关。 (虽然没有彩色代码=(