C#默认以管理员身份运行程序

由于WIN8的权限限制,很多程序安装后没有写入权限,导致程序无法正常运行,以下是让程序以管理员身份运行,解决此问题

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();
            }
        } 

打开程序集里的Program.cs文件,并将其中Main方法中的代码替换为以上代码即可实现程序默认以管理员身份运行。

时间: 2024-11-04 18:47:10

C#默认以管理员身份运行程序的相关文章

[Winform]默认以管理员身份运行程序

摘要 在使用setupfactory打包之后,想让程序默认以管理员身份运行,因为涉及到创建文件删除文件的操作,如果权限比较低的话,会出现没有权限操作的bug. 解决办法 在项目中找到app.manifest清单文件 修改requestedExecutionLevel 的属性level为requireAdministrator <?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifes

C#默认以管理员身份运行程序实现代码

using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace yyy { static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main(string[] Args) { /** * 当前用户是管理员的时候,直

C# windows权限问题 程序如何以管理员身份运行程序

程序如何以管理员身份运行程序 最近在项目运行过程中遇到了一个问题,就是打开程序的过程中,软件会出现打开数据库是一个只读数据库,我们需要将客户端设置为以管理员身份运行才能解决这种问题.这样虽然可以解决问题但是却给用户和与用与沟通的人员带来了不便,使软件的简易性与易操作性大打折扣. 那么我们能否在开发的过程中使软件直接以管理员的身份进行运行呢,答案是肯定的.结合在网上查询的资料和我个人的理解下介绍一下. 第一步:打开VS2013右键点击项目->属性->安全性->勾选启用ClickOnce安全

.NET以管理员身份运行程序

using System; using System.ComponentModel; using System.Diagnostics; using System.Windows.Forms; namespace RunAsAdministratorDemo { /// <summary> /// .NET以管理员身份运行程序 /// LDH @ 2018-1-5 /// </summary> internal class Program { /// <summary>

Win7、Win8、Win10始终以管理员身份运行程序。

Win7.Win8.Win10始终以管理员身份运行程序. 在Win7.Win8.Win10系统中,以管理员身份运行程序很麻烦,一般有以下几种方式: 1.在可执行程序或快捷方式上右键,以管理员身份运行: 2.在可执行程序或快捷方式上右键->属性->兼容性->勾选以管理员身份运行选项->确定: 3.修改安全策略,这也是一劳永逸的方式,使当前用户的所有操作以管理员身份进行,不进行询问. 本文中主要对第三种方式进行详细说明. 首先,进入用户帐户,操作顺序为:控制面板->用户帐户,如图

VS编译的可执行默认以管理员身份运行

文如其名,很多程序如果不以管理员身份运行的话无法操作到系统盘的一些文件,有些更加严重的是会在运行过程中直接报错,虽说可以通过修改该可执行文件的属性,设置其默认执行权限为"以管理员身份运行",然这毕竟麻烦,且很多用户根本就不会这么去做,是故让程序执行时就自己去要求管理员权限是最终的解决方法. 在VS下面,这个问题其实很好解决,就是做如下操作:右键工程名称选择属性->配置属性->链接器->清单文件->UAC执行级别 在下拉列表框中选择:requireAdminist

C# 以管理员身份运行程序

using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace MyWebBrowser { static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { //获得当前登录的Windows用户标示 Sy

C# 管理员身份运行程序

在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况下如果不是以管理员身份运行,则会提示命令无效. 或者通过winform程序执行Windows Service 服务时,也需要以管理员身份才能调用Service服务. 下面讲解一下如何使程序获取管理员权限来运行. 一: 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找

C#让程序以管理员身份运行程序

步骤:一: 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找到“安全性”选项 二:勾选“启用ClickOnce安全设置”, 三:这时,在项目下面会多出一个“app.manifest”的文件,选中它,并找到代码段<requestedExecutionLevel level="asInvoker" uiAccess="false" />,将其改为:<requestedExecutionLevel level="