【问题标题】:Check if my app has permissions to read process info and read/write to files and directories检查我的应用程序是否有权读取进程信息以及读取/写入文件和目录
【发布时间】:2011-11-29 02:11:21
【问题描述】:

如果我拥有获取进程列表、杀死进程、获取目录、获取目录中的文件、读取和写入文件等的权限,如何签入我的 C# 应用程序?谢谢!

【问题讨论】:

    标签: c# .net process permissions


    【解决方案1】:

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

    【讨论】:

    • 是的。 “试试看”通常是有效的。
    【解决方案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 非常相关。 (虽然没有彩色代码 =(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多