C#如何通过权限类和权限属性来修改安全权限的代码

工作过程中中,把写内容过程中重要的内容段备份一下,如下的内容是关于C#如何通过权限类和权限属性来修改安全权限的内容,应该对大伙有些用途。

using System;
using System.Security;
using System.Security.Permissions;
using System.Runtime.InteropServices;

class NativeMethods
{
    [DllImport("msvcrt.dll")]
    public static extern int puts(string str);
    [DllImport("msvcrt.dll")]
    internal static extern int _flushall();
}

class MainClass
{
    private static void CallUnmanagedCodeWithoutPermission()
    {
        SecurityPermission perm =
           new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);

        perm.Deny();

        try
        {
            Console.WriteLine("Attempting to call unmanaged code without permission.");
            NativeMethods.puts("Hello World!");
            NativeMethods._flushall();
            Console.WriteLine("Called unmanaged code without permission. Whoops!");
        }
        catch (SecurityException)
        {
            Console.WriteLine("Caught Security Exception attempting to call unmanaged code.");
        }
    }

    private static void CallUnmanagedCodeWithPermission()
    {
        SecurityPermission perm =
           new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);

        perm.Assert();

        try
        {
            Console.WriteLine("Attempting to call unmanaged code with permission.");
            NativeMethods.puts("Hello World!");
            NativeMethods._flushall();
            Console.WriteLine("Called unmanaged code with permission.");
        }
        catch (SecurityException)
        {
            Console.WriteLine("Caught Security Exception attempting to call unmanaged code. Whoops!");
        }
    }

    public static void Main()
    {
        SecurityPermission perm = new
            SecurityPermission(SecurityPermissionFlag.UnmanagedCode);
        perm.Assert();
        CallUnmanagedCodeWithoutPermission();

        perm.Deny();
        CallUnmanagedCodeWithPermission();
    }
}

using System;
using System.Security;
using System.Security.Permissions;
using System.Runtime.InteropServices;

class NativeMethods
{
    [DllImport("msvcrt.dll")]
    public static extern int puts(string str);
    [DllImport("msvcrt.dll")]
    internal static extern int _flushall();
}

class MainClass
{
    [SecurityPermission(SecurityAction.Deny, Flags =
       SecurityPermissionFlag.UnmanagedCode)]
    private static void CallUnmanagedCodeWithoutPermission()
    {
        try
        {
            Console.WriteLine("Attempting to call unmanaged code without permission.");
            NativeMethods.puts("Hello World!");
            NativeMethods._flushall();
            Console.WriteLine("Called unmanaged code without permission. Whoops!");
        }
        catch (SecurityException)
        {
            Console.WriteLine("Caught Security Exception attempting to call unmanaged code.");
        }
    }

    [SecurityPermission(SecurityAction.Assert, Flags =
       SecurityPermissionFlag.UnmanagedCode)]
    private static void CallUnmanagedCodeWithPermission()
    {
        try
        {
            Console.WriteLine("Attempting to call unmanaged code with permission.");
            NativeMethods.puts("Hello World!");
            NativeMethods._flushall();
            Console.WriteLine("Called unmanaged code with permission.");
        }
        catch (SecurityException)
        {
            Console.WriteLine("Caught Security Exception attempting to call unmanaged code. Whoops!");
        }
    }

    public static void Main()
    {
        SecurityPermission perm = new
            SecurityPermission(SecurityPermissionFlag.UnmanagedCode);

        perm.Assert();
        CallUnmanagedCodeWithoutPermission();

        perm.Deny();
        CallUnmanagedCodeWithPermission();
    }
}

using System;
using System.Security;
using System.Security.Permissions;
using System.Runtime.InteropServices;

class NativeMethods
{
    [SuppressUnmanagedCodeSecurityAttribute()]
    [DllImport("msvcrt.dll")]
    internal static extern int puts(string str);
    [SuppressUnmanagedCodeSecurityAttribute()]
    [DllImport("msvcrt.dll")]
    internal static extern int _flushall();
}

class MainClass
{
    [SecurityPermission(SecurityAction.Deny, Flags =
       SecurityPermissionFlag.UnmanagedCode)]
    private static void CallUnmanagedCodeWithoutPermission()
    {
        try
        {
            UIPermission uiPermission =
               new UIPermission(PermissionState.Unrestricted);
            uiPermission.Demand();

            Console.WriteLine("Attempting to call unmanaged code without UnmanagedCode permission.");
            NativeMethods.puts("Hello World!");
            NativeMethods._flushall();
            Console.WriteLine("Called unmanaged code without UnmanagedCode permission.");
        }
        catch (SecurityException)
        {
            Console.WriteLine("Caught Security Exception attempting to call unmanaged code.");
        }
    }

    [SecurityPermission(SecurityAction.Assert, Flags =
       SecurityPermissionFlag.UnmanagedCode)]
    private static void CallUnmanagedCodeWithPermission()
    {
        try
        {
            Console.WriteLine("Attempting to call unmanaged code with permission.");
            NativeMethods.puts("Hello World!");
            NativeMethods._flushall();
            Console.WriteLine("Called unmanaged code with permission.");
        }
        catch (SecurityException)
        {
            Console.WriteLine("Caught Security Exception attempting to call unmanaged code. Whoops!");
        }
    }

    public static void Main()
    {
        SecurityPermission perm = new
            SecurityPermission(SecurityPermissionFlag.UnmanagedCode);

       perm.Assert();
       CallUnmanagedCodeWithoutPermission();

       perm.Deny();
       CallUnmanagedCodeWithPermission();
    }
}

原文地址:http://blog.51cto.com/14137986/2332047

时间: 2024-10-19 22:40:05

C#如何通过权限类和权限属性来修改安全权限的代码的相关文章

restframework 权限流程 及自定义权限类

一.请求来到之后,都要先执行dispatch方法 def dispatch(self, request, *args, **kwargs): """ `.dispatch()` is pretty much the same as Django's regular dispatch, but with extra hooks for startup, finalize, and exception handling. """ self.args

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用

1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用 成员变量(属性)①类中添加成员变量 访问修饰符 类型 变量名 private String name ②实例化对象调用类的构造方法类构造对象,Teacher one = new Teacher(): 有static的可以直接调用,因为static是类级别的 ③JavaBean里边一般规则应该有公共的无参构造应该有符合命名规范的get/set方法 ④对象的回收:没有任何引用指向该对象时,GC会回收 主动回收:对象 = nu

drf框架 8 系统权限类使用 用户中心信息自查 token刷新机制 认证组件项目使用:多方式登录 权限组件项目使用:vip用户权限 频率组件 异常组件项目使用

系统权限类使用 图书接口:游客只读,用户可增删改查权限使用 from rest_framework.permissions import IsAuthenticatedOrReadOnly class BookViewSet(ModelViewSet): # 游客只读,用户可增删改查 permission_classes = [IsAuthenticatedOrReadOnly] queryset = models.Book.objects.all() serializer_class = se

C# Enum 简易权限设计 使用FlagsAttribute属性

C# Enum 简易权限设计 使用FlagsAttribute属性 基本权限设计: /// <summary> /// 权限列举 /// </summary> [FlagsAttribute] public enum Permissions { [Description("未设定")] None = 0, [Description("建立")] Create = 1, [Description("读取")] Read =

在学习c++过程中,总结类的三个用户以及使用权限,感觉非常实用

首先我们需要知道类的三个用户分别是:类的实现者,类的普通用户和类的继承者(派生类),接下来分别讲解这几种用户的区别. 1 .类的实现者:顾明思议,就是类的设计者,拥有最大的权限,可以访问类中任何权限的成员,主要负责编写类的成员和友元的代码.可以访问类中的公有部分(public),保护部分(protect)和(private)私有部分. 2.类的普通用户:就是使用类的对象,这部分用户只能访问类的接口(也就是公用部分poublic). 3.类的继承者:就是派生类.派生类能访问基类中的公有部分和受保护

chmod,chgrp,chown命令 修改文件权限

参考地址:http://www.cnblogs.com/avril/archive/2010/03/23/1692809.html linux系统的文件和目录属性都有访问许可权限. 文件或目录的访问权限分为只读.只写和可执行三种.其中这三种权限还对用户进行区分,分别是文件或目录拥有者.同用户组用户及其他用户. 如: 一个文件或目录有十位属性,分别是: 1--文件是目录还是纯文件.若是目录的话此位为d,否则为- 2~4--文件拥有者的读.写及可执行权限.r为可读,w为可写,x为可执行. 5~7--

linux下非root用户如何修改root权限的文件

在linux下会出现把一些配置文件参数配错.root密码忘记等导致系统无法启动或进入root的窘迫境地,本文以redhat  enterprise linux server 6.4为例介绍root身份修改root权限配置文件的参数后,root无法登录,然后通过linux的rescue模式改回配置文件,巧妙以非root身份修改了root权限的文件的解决方案. 首先,插入linux安装盘重启系统,等到引导进入安装会话,上下移动方向键,选rescue installed system: 第二,进入修复

Linux培训教程 linux下修改用户权限的方法

一般我们日常碰到要修改用户权限的,往往是要么修改一下用户的gorupid,通过上面命令可以改;要么是把普通用户改成具有超级权限的用户,这个一般自己不能直接改,只能是root或有root权限的用户才能帮你改,在/etc/passwd文件里面,找到对应userid那一行,将userid那一列你的id改成0,然后强制保存退出.这时候你的这个用户就有超级用户权限了.改用户的groupid也可以这样改. 如果是改某个文件的属性,就比较简单了,直接用chmod命令就可以了,我一般直接后面接数字,如果要给rw

修改TrustedInstaller权限文件(无法删除文件)

1.    右击需要修改的文件-属性 2.    切换到"安全"选项卡,点击"高级"按钮. 3.    切换到"所有者"选项卡 一般情况下默认所有者为TrustedInstaller(没有影响),单击"编辑"按钮 4.    弹出的窗口中选择当前计算机的登陆用户名,点击确定 5.    如果弹出如图提示窗口,直接点确定 6.    后面的窗口都点击确定 7.    再次右击该文件,属性,安全,编辑 8.    选择当前用户名,