【发布时间】:2011-11-29 02:11:21
【问题描述】:
如果我拥有获取进程列表、杀死进程、获取目录、获取目录中的文件、读取和写入文件等的权限,如何签入我的 C# 应用程序?谢谢!
【问题讨论】:
标签: c# .net process permissions
如果我拥有获取进程列表、杀死进程、获取目录、获取目录中的文件、读取和写入文件等的权限,如何签入我的 C# 应用程序?谢谢!
【问题讨论】:
标签: c# .net process permissions
如果您有权限可以毫无问题地进行操作,如果没有权限,您可以捕获异常并处理它(UnauthorizedAccessException 等)。
【讨论】:
在 .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 非常相关。 (虽然没有彩色代码 =(
【讨论】: