zoukankan      html  css  js  c++  java
  • 实现管理员身份运行软件

    针对WPF软件启动使用代码控制以管理员身份运行:

    1、app.manifest配置文件

    修改UAC 清单选项中requestedExecutionLevel 节点,将会禁用文件和注册表虚拟化。 

    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 

            <!--<requestedExecutionLevel level="asInvoker" uiAccess="false" />
          <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          <requestedExecutionLevel level="highestAvailable" uiAccess="false" />-->

            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
          <applicationRequestMinimum>
            <defaultAssemblyRequest permissionSetReference="Custom" />
            <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
          </applicationRequestMinimum>
        </security>
      </trustInfo>

    2、c#代码控制

    此处c#代码转载与http://blog.csdn.net/cleopard/article/details/40583595。重写OnStartup方法。

    protected override void OnStartup(StartupEventArgs e)  
          {  
              base.OnStartup(e);  
      
              CheckAdministrator();  
              //如果不是管理员,程序会直接退出,并使用管理员身份重新运行。  
              StartupUri = new Uri("MainWindow.xaml", UriKind.RelativeOrAbsolute);  
          } 
     private void CheckAdministrator()
            {
                var wi = WindowsIdentity.GetCurrent();
                var wp = new WindowsPrincipal(wi);
    
                bool runAsAdmin = wp.IsInRole(WindowsBuiltInRole.Administrator);
    
                if (!runAsAdmin)
                {
                    // It is not possible to launch a ClickOnce app as administrator directly,
                    // so instead we launch the app as administrator in a new process.
                    var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);
    
                    // The following properties run the new process as administrator
                    processInfo.UseShellExecute = true;
                    processInfo.Verb = "runas";
    
                    // Start the new process
                    try
                    {
                        Process.Start(processInfo);
                    }
                    catch (Exception ex)
                    {
                        //ex.WriteLog();
                    }
    
                    // Shut down the current process
                    Environment.Exit(0);
                }
            }
  • 相关阅读:
    Spring 让 LOB 数据操作变得简单易行
    让Apache Shiro保护你的应用
    MongoDB、Java及ORM
    Spring 的优秀工具类盘点,第 1 部分: 文件资源操作和 Web 相关工具类
    Spring 的优秀工具类盘点,第 2 部分: 特殊字符转义和方法入参检测工具类
    SpringMVC:上传与下载
    Web数据挖掘在电子商务中的应用
    Mongodb快速入门之使用Java操作Mongodb
    Mongodb数据库入门之Spring Mongodb
    基于综合兴趣度的协同过滤推荐算法
  • 原文地址:https://www.cnblogs.com/machenghu/p/6424589.html
Copyright © 2011-2022 走看看