Win7 C# 控制台程序写注册表被拒,需要以管理员身份运行。

原创 2014年07月19日 09:16:35

      最近写了一个控制台程序,将程序的相关信息注册到注册表中。但是运行的时候提示写注册表被拒。电脑的当前用户没有管理员的权限。

        如何给控制台程序赋管理员的权限呢?

       给程序添加 .manifest 文件:应用程序的Manifests则用于描述隔离应用程序,它管理着此应用程序在运行时要绑定的共享的并行组件的名字、版本。该Manifests可以作为一个文件(.manifest文件)存储在应用程序相同的目录下,也可以作为一种资源嵌入在可执行文件内部(Embed Manifest)。

       1、通过属性界面加载。

        


        首先检查 VS2010 的【Properties】节点下是否有【app.manifest】这个文件,如果没有的话双击【Properties】节点。弹出属性界面。

   勾选中【Security】页面中的【Enable ClickOnce Security Settings】节点(如下图)。会在【Properties】下就有自动生成【app.manifest】文件(如右上图)。

              


    双击打开【app.manifest】文件,将

    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />

    改为

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

asInvoker : 应用程序就是以当前的权限运行。

highestAvailable: 以当前用户可以获得的最高权限运行。

requireAdministrator: 以系统管理员权限运行。



修改后的文件如下:


    然后再勾去【Security】中【Enable ClickOnce Security Settings】后,重新编译即可。

         2、通过添加新项添加:


 

通过这种方式添加的app.manifest不是位于Properties】节点下;而是位于Properties】的同级目录下。

双击打开【app.manifest】文件,将

    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />

    改为

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
即可。







附:如果是WinFrom 窗体应用程序:可以通过代码来实现“以管理员身份运行”(转)

static void Main(string[] Args)
        {
            /**
             * 当前用户是管理员的时候,直接启动应用程序
             * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
             */
            //获得当前登录的Windows用户标示
            System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
            //创建Windows用户主题
            Application.EnableVisualStyles();

            System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
            //判断当前登录用户是否为管理员
            if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
            {
                //如果是管理员,则直接运行

                Application.EnableVisualStyles();
                Application.Run(new Form1());
            }
            else
            {
                //创建启动对象
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                //设置运行文件
                startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
                //设置启动参数
                startInfo.Arguments = String.Join(" ", Args);
                //设置启动动作,确保以管理员身份运行
                startInfo.Verb = "runas";
                //如果不是管理员,则启动UAC
                System.Diagnostics.Process.Start(startInfo);
                //退出
                System.Windows.Forms.Application.Exit();
            }
        } 



版权声明:本文为博主原创文章,未经博主允许不得转载。

win7下c#程序修改注册表的权限问题

最近在做一个cs的项目,项目已经完成,后来发现不兼容windows7,经过一番整改,终于大功落成。现将心得体会写在这里。 首先读取注册表要给用户管理员得权限。exe在Vista或Win7下不以管理员...

C#读取注册表的权限问题

http://blog.sina.com.cn/s/blog_4a54d07201019xjo.html
  • Herro09
  • Herro09
  • 2016年10月08日 16:07
  • 887

解决Win7系统下以管理员身份运行的程序接收不到拖放文件消息[WM_DROPFILES]问题的方法

大多数程序都有接收拖放文件的功能,即是用鼠标把文件拖放到程序窗口上方,符合格式的文件就会自动被程序打开。最近自己对编写的程序增加了一个拖放文件的功能,在 Windows XP、Windows Serv...

编写C#程序让其在Win7 下以管理员权限运行

Vista 和 Windows 7 操作系统为了加强安全,增加了 UAC(用户账户控制) 的机制,如果 UAC 被打开,用户即使是以管理员权限登录,其应用程序默认情况下也无法对系统目录,系统注册表等可...

C#程序 Win7 下提示以管理员权限运行

Vista 和 Windows 7 操作系统为了加强安全,增加了 UAC(用户账户控制) 的机制,如果 UAC 被打开,用户即使是以管理员权限登录,其应用程序默认情况下也无法对系统目录,系统注册表等可...

VS 中引入app.manifest(c#程序在win7及以上windows版本下以管理员权限运行方法)

打开VS2005、VS2008、VS2010、VS2012、VS2013、VS2015工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件;如没有,按如下方式创建...

win7的管理员身份运行

  • 2012年05月22日 22:49
  • 287B
  • 下载

android音乐播放器;activity生命周期;模拟器用快照(snapshot)没声音;win7要用管理员身份运行adt,才能打开模拟器sdcard;

onCreat到onDestroy是整个activity生命周期(界面生成代码放在oncreate,放其他循环占内存);onStart到onStop是所有在显示界面的周期(onRestart完成循环,...

win7如何设置以管理员身份运行

原文地址::http://jingyan.baidu.com/article/0bc808fc68f3c11bd485b9b3.html 1 2 3 4 ...

win7中以管理员身份运行bat脚本时,获取当前文件所在目录

 知道windows的bat脚本很强大,但是具体命令向来很少接触,今天在win7上运行自己以前写的一个安装mysql数据库到系统服务的脚本时,遇到一些问题,下面记录一下。 问题:mys...
  • libocdf
  • libocdf
  • 2016年01月26日 15:56
  • 1269
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Win7 C# 控制台程序写注册表被拒,需要以管理员身份运行。
举报原因:
原因补充:

(最多只允许输入30个字)