精华内容
下载资源
问答
  • 所以更好的办法是程序直接主动申请权限,具体的做法是在项目中添加“应用程序清单文件”,默认会以 app.manifest 为文件名添加至项目根目录,如下所示。 <?xml version="1...

    很多时候,我们的程序因为需要管理员权限的问题而导致运行失败。这时候可以使用右键菜单,选中程序,以“管理员身份运行”,如下图所示。
    在这里插入图片描述
    虽然问题是可以解决,但是经常有时候客户不清楚如何操作,还是会带来麻烦。
    所以更好的办法是程序直接主动申请权限,具体的做法是在项目中添加“应用程序清单文件”,默认会以 app.manifest 为文件名添加至项目根目录,如下所示。

    <?xml version="1.0" encoding="utf-8"?>
    <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <!-- UAC 清单选项
                 如果想要更改 Windows 用户帐户控制级别,请使用
                 以下节点之一替换 requestedExecutionLevel 节点。n
            <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
            <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    
                指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
                如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
                元素。
            -->
            <requestedExecutionLevel level="asInvoker" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
          <!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
               Windows 版本的列表。取消评论适当的元素,
               Windows 将自动选择最兼容的环境。 -->
    
          <!-- Windows Vista -->
          <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
    
          <!-- Windows 7 -->
          <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
    
          <!-- Windows 8 -->
          <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
    
          <!-- Windows 8.1 -->
          <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
    
          <!-- Windows 10 -->
          <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
    
        </application>
      </compatibility>
    
      <!-- 指示该应用程序可以感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
           自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
           选择加入。选择加入此设置的 Windows 窗体应用程序(目标设定为 .NET Framework 4.6 )还应
           在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。-->
      <!--
      <application xmlns="urn:schemas-microsoft-com:asm.v3">
        <windowsSettings>
          <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
        </windowsSettings>
      </application>
      -->
    
      <!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
      <!--
      <dependency>
        <dependentAssembly>
          <assemblyIdentity
              type="win32"
              name="Microsoft.Windows.Common-Controls"
              version="6.0.0.0"
              processorArchitecture="*"
              publicKeyToken="6595b64144ccf1df"
              language="*"
            />
        </dependentAssembly>
      </dependency>
      -->
    
    </assembly>
    

    requestedExecutionLevel 的等级中,共有三项,分别是 asInvoker, highestAvailablerequireAdministrator。对应的权限,asInvoker 为一般程序(默认),highestAvailable 为当前用户的最高权限, requireAdministrator 为管理员权限。在设置为管理员权限后,每次程序启动时,如果没有相应权限,会主动弹出以下对话框要求权限。
    在这里插入图片描述
    补充,如果嫌弹出这个对话框麻烦,在用户许可的情况下,可以通过快捷方式进行设置管理员权限,如下所示。
    在这里插入图片描述
    除了权限问题,此文件中还包括兼容的操作系统信息,如果设置了此项,那么在不是对应的操作系统上运行时会有相应的提示(待续……)

    展开全文
  • 如果你的程序对 Windows 运行权限有要求,那么需要设置应用程序清单。本文介绍如何添加应用程序清单,并解释其中各项权限设置的实际效果。 本文内容嵌入带默认设置的清单新建一个自定义的清单文件创建不带清单的...

    如果你的程序对 Windows 运行权限有要求,那么需要设置应用程序清单。本文介绍如何添加应用程序清单,并解释其中各项权限设置的实际效果。


    嵌入带默认设置的清单

    对于 WPF 和 Windows Forms 程序,如果你什么都不做,那么就已经嵌入了一个带有默认设置的清单。

    下图可以在 Visual Studio 中的项目上右键属性插件。

    嵌入带默认设置的清单

    新建一个自定义的清单文件

    在项目上右键,添加,新建项。可以在新建模板中找到“应用程序清单文件”。确认后即添加了一个新的清单文件。这时,项目属性页中的清单也会自动设置为刚刚添加的清单文件。

    按照清单模板新建清单

    默认的清单中,包含 UAC 清单选项、系统兼容性选项、DPI 感知级别选项和 Windows 公共控件和对话框的主题选项。

    <?xml version="1.0" encoding="utf-8"?>
    <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <!-- UAC 清单选项
                 如果想要更改 Windows 用户帐户控制级别,请使用
                 以下节点之一替换 requestedExecutionLevel 节点。n
            <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
            <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
            <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
    
                指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
                如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
                元素。
            -->
            <requestedExecutionLevel level="asInvoker" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
    
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
          <!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
               Windows 版本的列表。取消评论适当的元素,
               Windows 将自动选择最兼容的环境。 -->
    
          <!-- Windows Vista -->
          <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
    
          <!-- Windows 7 -->
          <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
    
          <!-- Windows 8 -->
          <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
    
          <!-- Windows 8.1 -->
          <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
    
          <!-- Windows 10 -->
          <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
    
        </application>
      </compatibility>
    
      <!-- 指示该应用程序可以感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
           自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
           选择加入。选择加入此设置的 Windows 窗体应用程序(目标设定为 .NET Framework 4.6 )还应
           在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。-->
      <!--
      <application xmlns="urn:schemas-microsoft-com:asm.v3">
        <windowsSettings>
          <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
        </windowsSettings>
      </application>
      -->
    
      <!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
      <!--
      <dependency>
        <dependentAssembly>
          <assemblyIdentity
              type="win32"
              name="Microsoft.Windows.Common-Controls"
              version="6.0.0.0"
              processorArchitecture="*"
              publicKeyToken="6595b64144ccf1df"
              language="*"
            />
        </dependentAssembly>
      </dependency>
      -->
    
    </assembly>
    

    创建不带清单的应用程序

    你也可以创建一个不带应用程序清单的应用程序。方法是在属性页中将清单设置为“创建不带清单的应用程序”。

    创建不带清单的应用程序


    我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

    如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

    知识共享许可协议

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

    展开全文
  • 众所周知,C#中最小的部署单元和可执行,可测试单元是程序集...它就是我们今天要提到的,应用程序清单文件。   程序集的组成 程序集可以由四部分组成。 程序集清单(Assembly Manifest):每个程序集必...

    众所周知,C#中最小的部署单元和可执行,可测试单元是程序集(Assembly),程序集一般分为类库(dll)和可执行文件(exe)。这些都是很浅显的,但是除此之外,我们经常会发现有一个后缀名为manifest的xml文件,这又是什么呢?它就是我们今天要提到的,应用程序清单文件。
     

    程序集的组成

    在这里插入图片描述
    程序集可以由四部分组成。

    • 程序集清单(Assembly Manifest):每个程序集必须具备程序集清单,清单上面描述了程序集的版本号,元数据,定义了哪些类,提供一个渠道让宿主环境(hosting environment)在加载该程序集时了解该程序集,同时也是程序集能实现自我描述,反射技术能存在的基础。
    • 应用程序清单(Application Manifest):可执行的程序集可以用应用程序清单,让操作系统知道应该如何与此程序集打交道,最常见的使用在于要求用户提供管理员权限。
    • 代码(IL Code):程序集所包含的代码(已经被编译成了中间语言)。其实这么说还不完全准确,程序集包含的是模块(Module),模块中包含的才是代码,不过说程序集包含代码,也勉强可以。
    • 资源文件(Resource Files):程序集里面的资源文件,如图片,本地化资源等。

    如何添加应用程序清单

    默认情况下,通过visual studio创建一个应用程序是没有应用程序清单的。
    在这里插入图片描述
    通过右键手动添加一个应用程序清单。
    在这里插入图片描述
    在这里插入图片描述
     

    通过应用程序清单获取管理员权限

    双击打开该文件,找到requestedExecutionLevel一栏,发现默认值是asInvoker,证明默认情况下清单并不要求运行该程序时用户应该是管理员。
    在这里插入图片描述

    尝试将这个值改为requireAdministrator,生成项目。

    在这里插入图片描述

    这时我们发现,应用程序图标左下角新出现了一个盾牌,从VISTA版本(那个时候开始有UAC)开始,应用程序有这个图标就意味着运行的时候需要提升权限。双击尝试运行,果然要求提升为管理员权限的对话框弹了出来,这样,我们就通过一个小小的应用程序清单,实现了管理员权限的获得。是不是很有用呢?

    展开全文
  • 你不能那样做。 首先,当管理员密码更改时,您的代码将被破坏。 其次,您真的要在“纯文本”中的文件中添加管理员级别的密码吗? 那是什么样的安全性?!?!?!您可以将清单文件放在其中,并带有请求的执行级别...
  • 这将解析应用程序清单文件以提取依赖项列表。 当前仅支持用于C#的NuGet,默认情况下,它将从工作区目录中遍历目录树并解析为PackageReference条目找到的所有csproj文件,但可以将其定向到特定文件,将其读取的所有...
  • 为了使程序不出警告,强签名这里是在最后完成的。 简单说一下过程: 1.新建一个文本文件,输入以下代码:    version="1.0.0.0"  processorArchitecture="X86"  name="AppName"  ...

    为了使程序不出警告,强签名这里是在最后完成的。

    简单说一下过程:

    1.新建一个文本文件,输入以下代码:

     

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
      version="1.0.0.0"
      processorArchitecture="X86"
      name="AppName"
      type="win32"
    />
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
      <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
        </requestedPrivileges>
      </security>
    </trustInfo>
    </assembly>

    上面的资源文件里有一个配置选项叫requestedExecutionLevel,  这个项用于配置当前应用请求的执行权限级别。这个项有3个值可供选择,如下所示:

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

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

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

     

    保存后改名为AppName.exe.manifest

    利用mt.exe来注入该清单文件。

    命令行:mt -mainfest AppName.exe.manifest -outputresource:AppName.exe ;#1

     

    2.添加Icon

    命令行:ReplaceVistaIcon.exe AppName.exe Icon.ico

    ReplaceVistaIcon.exe是一个小工具。

     

    3.强签名

    命令行:sn -R AppName.exe Private.snk

     

    将以上三段命令行写入编译后事件中,即可。

    C# <wbr>winform <wbr>编译成功后为程序添加清单文件,添加Icon以及强签名

     

    另:

    要注意,程序强签名要设置为延迟签名。

    即:程序签名处的AssemblyDelaySign属性设置为true([assembly:AssemblyDelaySign(true)])

     

    以上命令行都是VS自带的command所执行的所以使用时,App可执行文件(exe),SN.EXE,MT.EXE,清单文件,ico图标等的目录需要根据实际情况设定。



    判断程序是否以管理员身份运行

     需要添加命名空间:

    using System.Security.Principal;

    复制代码
        /// <summary>
        /// 确定当前主体是否属于具有指定 Administrator 的 Windows 用户组
        /// </summary>
        /// <returns>如果当前主体是指定的 Administrator 用户组的成员,则为 true;否则为 false。</returns>
        public static bool IsAdministrator()
        {
            bool result;
            try
            {
                WindowsIdentity identity = WindowsIdentity.GetCurrent();
                WindowsPrincipal principal = new WindowsPrincipal(identity);
                result = principal.IsInRole(WindowsBuiltInRole.Administrator);
    
                //http://www.cnblogs.com/Interkey/p/RunAsAdmin.html
                //AppDomain domain = Thread.GetDomain();
                //domain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
                //WindowsPrincipal windowsPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
                //result = windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
            }
            catch
            {
                result = false;
            }
            return result;
        }
    复制代码

    展开全文
  • C# 窗体修改应用程序图标

    千次阅读 2021-06-14 20:29:14
    制作图标 修改图标我们首先要先会制作一个图标,在这里给大家一个 ico文件转化网站 ...进入网站,选择尺寸,图片进行转换。...点击【应用程序】→【资源】→【图标和清单】→【浏览】,修改图标(ico文件)。 之
  • C# 应用程序开发时,修改程序代码后,调试运行程序 莫名其妙弹出这个报错。 百度找解药呀,,找了好多方法,,都是 " 项目--->配置属性---->链接器---->清单文件--->生成清单-->设置为"否" " 然后...
  • C# 设置应用程序需要管理员权限

    千次阅读 2019-04-25 15:37:19
    当程序中有些操作需要使用到管理员权限时,如果在启动程序时没有使用管理员权限启动,在运行过程中实现不了我们需要的效果,这儿就需要对应用程序的启动加以限制。 给应用程序设置管理员权限 1.在Visual Studio 中...
  • C# 应用程序域和程序集

    千次阅读 2016-06-08 12:10:47
     进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他...
  • C#生成的应用程序右键详细信息上面的版本到底怎么改呢,一直想知道。 今天特地查了下,原来在这里,在Propertise下的Assemblyinfo.cs中 双击打开后就可看到相关信息 usingSystem.Reflection; ...
  • 比如我们这个例子的清单文件叫MyApp.application。但我们会发现,找不到资源。 打开服务器上的目录一看,里面竟然是空的,我晕。 没关系,我们只要把刚才的发布选项改一下就行了。 然后重新发布就可以了...
  • 右键新建项-应用程序清单文件 修改manifestUAC权限控制 需要修改的部分: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-...
  • C# WInForm程序通过app.manifest文件设置程序默认启动权限
  • 上一周全部都在围绕以下这个问题走,找另外很多人,首先新建UI层排除vs软件是没有什么问题的。 上周反复找了很多人,到最后是解决了问题,但是解决的途径就是新建UI层,然后重新写代码,设置控件,没有找到问题的...
  • 这里是在VS2017下面操作为例,程序需要管理员权限运行,manifest是改动最小的方式。这里以RTVS项目为例进行讲解。添加manifest配置文件项目右键添加新建项,如下图所示:修改manifestUAC权限控制项目结构如下:需要...
  • 其中的:"*..pdb","*.vshost.exe","*..vshost.exe.manifest" 的作用是...PDB(程序数据库)文件保持着调试和项目状态信息,从而可以对程序的调试配置进行增量链接。 vshost.exe 是宿主进程文件。宿主进程是 Visua...
  • 新建另一C#窗体程序,在窗体上任意添加一个控件,在解决方案视图下可以看到多了一个“Form1.resx”文件,在工程文件目录中找到它,复制到缺失Form1.resx文件的工程目录下即可。 ...
  • 什么是程序集? 1.程序集(assembly)是一个及一...4、在编译应用程序中,所创建的CIL代码存储在一个程序集中,程序集包括可执行的应用程序文件(.exe扩展名文件)和其他应用程序使用的库(.dll扩展名文件)。 作为一个单
  • c#生成exe可执行文件

    万次阅读 2019-07-04 19:04:10
    c#生成exe可执行文件 【Visual Studio】 ※生成exe可执行文件方式 1.调试完毕,确认程序无误后:生成-生成解决方案 ...2.项目-文件名属性-应用程序选项卡-图标和清单-图标-选择ico文件-再执行生成 CSDN博客试水 ...
  • 资源在编译期间添加到程序集。如果要将资源嵌入到程序集,则...一旦设置为嵌入的资源,则它就会成为资源清单程序集的一部分。每一程序集,无论是静态的还是动态的,均包含描述该程序集中各元素彼此如何关联的数据...
  • 新手可能会遇到的问题,app.manifest这个文件,如果没有的话,通过以下方法创建: ...3、勾选【启用ClickOnce安全设置】,并选中【这是完全可信的应用程序】。 4、保存工程,这时候app.manifest就自动创建了。...
  • //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。 string str6=Application.ExecutablePath;//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。 string str7=AppDomain....
  • 使用VS2019生成C#应用安装包

    千次阅读 2020-04-18 16:04:54
    使用一个扩展来打包为.msi文件
  • 资源文件生成器将 .txt 文件和 .resx(基于 XML ...有关部署和检索 .resources 文件的信息,请参见应用程序中的资源。 Resgen.exe 执行下列转换: 将 .txt 文件转换为 .resources 文件或 .resx 文件。 将 .resou...
  • C#程序

    千次阅读 2014-04-25 11:19:23
    程序集的概念 程序集的定义:  1.程序集是一个或多个托管模块,以及一些资源文件的逻辑组合。...在程序集包含的所有文件中,有一个文件用于保存清单。(清单是元数据部分中一组数据表的集合,其中包含了程序集中
  • 编写一个C#应用程序以读取文本文件以显示更新的清单信息。 涉及的步骤 将C#语言与OOP(面向对象编程)方法一起使用。 从TextFile读取以更新库存数据 从文本文件读取以创建仓库对象 未来的计划 目前尚无未来计划
  • //获取包含清单的已加载文件的路径或 UNC 位置。 public static string sApplicationPath = Assembly.GetExecutingAssembly ( ).Location; //result: X:\xxx\xxx\xxx.dll (.dll文件所在的目录+.dll文件名) /...
  • 如何给自己写的程序添加和设置图标?...选择[应用程序]选项卡,在[图标和清单]中选择图标,这样在生成的最终可自行程序就会显示设置的图标,快捷方式也就带有设定的图标了. 选择[发布]选项卡则可设置程序的版本序号:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,408
精华内容 4,963
关键字:

c#应用程序清单文件

c# 订阅