zoukankan      html  css  js  c++  java
  • [zt+总结]wpf 应用权限问题

    一、Inno Setup打包添加和去除管理员权限

    转载:https://www.cnblogs.com/walker-lc/articles/3470679.html

    添加管理员权限

    1、在[Setup]节点添加 PrivilegesRequired=admin

    2、进入安装目录,找到文件SetupLdr.e32,这是一个二进制配置文件,需要用到ResHacker.exe这个工具修改

        (下载路径:http://www.angusj.com/resourcehacker/

       找到<requestedExecutionLevel level="asInvoker" uiAccess="false"/></requestedPrivileges>,

         修改为<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/></requestedPrivileges>

         ps:如果不修改步骤2的话,则会出现INNO SETUP 打包程序 在WIN7/10下 报CREATE PROCESS 错误的权限问题。

    删除管理员权限

    1、在[Setup]节点添加 PrivilegesRequired=none 或者 PrivilegesRequired=lowest

    2、在[Setup]节点修改 DefaultDirName(安装路径)的值,默认可能是DefaultDirName={pf}{#MyAppName},

      不要带{pf}, {win}, {sys}这些变量值,比如设置成DefaultDirName={localappdata}{#MyAppName}

    二、WPF/C# WinForm应用程序设置权限

          转载:https://www.jb51.net/article/59303.htm

           通过app.manifest使程序以管理员身份运行:

     通常我们使用c#编写的程序不会弹出这个提示,也就无法以管理员身分运行。微软的操作系统使用微软的产品方法当然是有的,通过app.manifest配置可以使程序打开的时候,弹出UAC提示需要得到允许才可以继续,这样就获得了管理员的权限来执行程序。

    微软在Windows Vista开始引入了UAC(用户帐户控制)新技术(点击这儿了解什么是UAC)。当程序执行时需要权限的话,UAC会弹出警告消息:让用户确认是否同意允许这个程序改变你的计算机配置,windows需要得到你的许可才可以让程序继续执行下去。

    通常我们使用c#编写的程序不会弹出这个提示,也就无法以管理员身分运行。微软的操作系统使用微软的产品方法当然是有的,通过app.manifest配置可以使程序打开的时候,弹出UAC提示需要得到允许才可以继续,这样就获得了管理员的权限来执行程序。

    方法如下:

    打开vs2005、vs2008等工程,在【解决方案资源管理器】里查看是否有app.manifest这个文件,如果没有的话,通过以下方法创建:

    方法1:

    1、在【解决方案资源管理器】右键工程名称选择属性;
    2、在弹出的该对话框中,选择【安全性】选项卡。
    3、勾选【启用ClickOnce安全设置】,并选中【这是完全可信的应用程序】。
    4、保存工程,这时候app.manifest就自动创建了。

                                                          

     

                                                                             


    打开app.manifest把默认的配置修改一下,通过代码的注释,可以知道需要修改的节点是【requestedExecutionLevel】



    asInvoker : 如果选这个,应用程序就是以当前的权限运行。

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

    requireAdministrator: 这个是仅以系统管理员权限运行。

    找到<requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    把其改为<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

    这时候修改完成,按下F5进行调试,通常会收到如下的错误提示:【ClickOnce 不支持请求执行级别“requireAdministrator”】。

    事情好像发生了相互矛盾,上面开启【ClickOnce】便自动创建了app.manifest,现在修改了app.manifest却提示:ClickOnce 不支持请求执行级别“requireAdministrator”。

    解决方法是:只要把【启用ClickOnce安全设置】不勾选就可以了。

    如果操作步骤正确,按下F5进行调试,会弹出如下的提示框,VS具有提升的权限。
     


    这样我们编写的应用程序在运行后,就会首先弹出这样一个提示框 , 点【Yes】后,程序才可以继续运行,并且获得系统管理员的权限。

    方法2:

    为工程项目添加一个类,应用程序清单文件(app.manifest)。


    c# 添加应用程序清单文件


    然后可以看到app.manifest的位置不在Properties属性里了,变成在引用里了,其节点内容也少了一些。


    剩下的方法和上面相同。这样跳过了【启用ClickOnce安全设置】这步,直接执行,不会出错了。

  • 相关阅读:
    替代Reflector的反编译软件ILSpy 1.0正式发布了
    持续集成理论和实践的新进展
    基于hudson搭建持续集成服务器
    URL友好化
    选择持续集成工具需要考虑的几个因素
    http://www.cnblogs.com/msdnchina/archive/2011/07/28/MSDNPortals.html
    Android开发之旅
    Windows 7下安装Android,出现问题的解决方案
    推荐一个很棒的免费自助建站工具:Tap
    第一讲:Android开发环境的搭建
  • 原文地址:https://www.cnblogs.com/bluecagalli/p/9553382.html
Copyright © 2011-2022 走看看