zoukankan      html  css  js  c++  java
  • 启动管理员进程

    启动管理员进程

    当我们运行一个程序的时候有时需要提升到管理员权限,但是默认的C#程序的运行权限是当前用户的权限,那么怎么提升这个启动权限呢?

    经过网上的一番搜索后,找到如下两种方式:

    1. 通过应用程序清单文件实现(app.mainfest)

    创建app.mainfest的两种办法:

    1. 第一种办法:

    在项目的【Properties】上添加【新建项】,弹出窗口找到【应用程序清单文件】,最后【确定】。

    1. 第二种办法:

    查看项目的【属性】,在属性页找到【安全性】,然后点击【启用ClickOnce安全设置】,然后保存(ctrl+s),你会发现Preperties目录下生成了app.mainfest文件,然后再取消【启用ClickOnce安全设置】的选中状态。

    创建app.mainfest文件后,打开并编辑做以下修改:
    asInvoker改为requireAdministrator

    2. 通过添加代码来实现

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.IO;
    using System.Security.Principal;
    using System.Windows.Forms;
    
    namespace Test
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                WindowsIdentity identity = WindowsIdentity.GetCurrent();
                WindowsPrincipal principal = new WindowsPrincipal(identity);
                //判断当前用户是否为管理员
                if (principal.IsInRole(WindowsBuiltInRole.Administrator))
                {
                    //如果是管理员,则直接运行
                    Application.Run(new Form1());
                }
                else
                {
                    //创建启动对象
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.UseShellExecute = true;
                    startInfo.WorkingDirectory = Environment.CurrentDirectory;
                    startInfo.FileName = Application.ExecutablePath;
                    //设置启动动作,确保以管理员身份运行
                    startInfo.Verb = "runas";
                    Process.Start(startInfo);
                    //退出               
                    Application.Exit();
                }
            }
        }
    }
    
    
  • 相关阅读:
    Java内部类
    Java创建对象的初始化顺序
    Java多态与动态绑定
    Java访问修饰符
    Django框架学习----视图与模板(详情页的上下篇文章跳转跳转)
    Django框架学习----视图与模板(首页与详情页的跳转)
    Django框架学习----视图与模板(显示数据库数据到页面)
    Django框架学习----视图与模板(网站页面设计)
    Django框架学习----模型层
    Logstash同步mysql数据库信息到ES
  • 原文地址:https://www.cnblogs.com/guodf/p/6656906.html
Copyright © 2011-2022 走看看