如何创建清单文件以使用管理员权限启动应用程序?

2024-01-18

我想为我的 VB 6.0 程序创建一个清单文件,这样当我启动我的应用程序时,操作系统应该要求用户提供管理员权限。

我还想知道如何将其嵌入到应用程序中?


您实际上并没有在 VB 中创建清单文件。 Windows 应用程序清单是一个标准文本文档,格式为 XML。您可以在记事本中创建它,并使用适当的文件名将其保存在应用程序的目录中(YourAppName.exe.manifest).

Microsoft 在此处提供了更多信息:应用清单 http://msdn.microsoft.com/en-us/library/aa374191.aspx。它甚至包括一个示例清单,您只需将其复制并粘贴到空白文本文件中即可开始。

如果您希望应用程序提示用户进行提升,重要的是设置requestedExecutionLevel to requireAdministrator, 而不是asInvoker。提供了有关通过 UAC 使用清单的具体信息here http://msdn.microsoft.com/en-us/library/bb756929.aspx.

因此,完整的示例可能如下所示:

<?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="*"
     name="MyMagicalApplication"
     type="win32"
  /> 
  <description>Sample manifest for your super cool application</description> 

  <!-- Request version 6 of the common controls. -->
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        processorArchitecture="*"
        publicKeyToken="6595b64144ccf1df"
        language="*"
      />
    </dependentAssembly>
 </dependency>

  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"
        />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

将清单嵌入可执行文件的传统方法是使用mt.exe utility http://msdn.microsoft.com/en-us/library/aa375649.aspx,作为 Windows SDK 的一部分提供。

The VB加速器网站 http://www.vbaccelerator.com/home/VB/Code/Libraries/XP_Visual_Styles/Using_XP_Visual_Styles_in_VB/article.asp还有一些有关在 VB 6 应用程序中嵌入清单的信息。具体来说,它说:

提供清单的方法有两种:最简单(但最不优雅)的方法是在磁盘上提供可执行文件的清单。假设您的应用程序名为 TimeSlot.exe。然后,如果您将上面的清单 XML 保存为

TimeSlot.exe.manifest

在与可执行文件相同的目录中,TimeSlot.exe 将自动获取 XP 样式。提供了 VB5 和 VB6 示例。如果您在运行应用程序之前重命名 .manifest 文件,则可以关闭 XP 样式。

更可靠的方法是将清单编译为应用程序中的资源。为此,清单必须显示为资源类型RT_MANIFEST(24)带身份证CREATEPROCESS_MANIFEST_RESOURCE_ID(1).由于某种奇怪的原因,你must还要确保生成的 XML 文件长度是 4 字节的偶数倍。例如,如果您的文件实际上是 597 字节,则需要在编译之前添加填充空间以使文件大小达到 600 字节。资源示例演示了如何使用资源编译器脚本(.rc 文件)和 RC.exe 创建此资源文件。

但如果你想嵌入清单自动地当您从 VB6 IDE 构建应用程序时,您会遇到一些困难。比 VB6 IDE 不支持构建后步骤,因此您不能简单地运行mt.exe在命令行上为您执行此操作。那里are我在网上看到的一些实用程序声称可以自动为您嵌入清单,但我相信其中大多数都是较旧的实用程序,仅处理 ComCtl32.dll 的请求 v6。我不确定它们是否可以轻松扩展以包含 UAC 权限,但值得一试。以下是一些可以查看的链接:

  • http://vb6zone.blogspot.com/2010/07/make-my-manifest.html http://vb6zone.blogspot.com/2010/07/make-my-manifest.html
  • http://sourceforge.net/projects/ummm/ http://sourceforge.net/projects/ummm/
  • http://www.vbforums.com/showthread.php?t=606736 http://www.vbforums.com/showthread.php?t=606736
  • http://www.vbforums.com/showthread.php?t=430886 http://www.vbforums.com/showthread.php?t=430886
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建清单文件以使用管理员权限启动应用程序? 的相关文章

  • 在 powershell 脚本中以不同用户身份本地运行代码块

    这是非常简单的事情 但我就是无法让任何东西发挥作用 我想在特定用户下的 powershell 脚本中运行块代码 关键字是locally我正在使用 powershell 2 0 Invoke Command 似乎需要远程主机 我运行以下命令
  • SidBySide:3rd Party Dll 指的是 MSVCR80.DLL 的两个版本

    我们包含了一个 3rd Party lib DLL 最近在安装时造成了很多麻烦 使用依赖步行者 http www dependencywalker com 我们发现dll本身引用了两个不同版本的 MSVCR80 DLL Version 8
  • Jekyll for GitHub Pages 在 Windows 上找不到 rouge

    我刚刚在 Windows 上安装了 Jekyll 我正在尝试使语法突出显示与 rouge 一起使用 我已经设定highlighter rouge在 config yml 上 在文件 posts 2015 08 13 my first pos
  • 64 位大型 malloc

    malloc 失败的原因是什么 尤其是在 64 位中 我的具体问题是尝试在 64 位系统上分配一大块 10GB RAM 该机器有 12GB RAM 和 32GB 交换空间 是的 malloc 是极端的 但是为什么它会成为一个问题呢 这是在带
  • Node.js + Socket.io + Windows 7 / 8?

    我一直在到处寻找 但似乎找不到解决方案 是否可以在 Windows 7 上的 Node js 上安装 Socket io 如果没有 是否有某种替代方案 或者您知道未来有任何 Windows 支持吗 通常使用 Node js 包管理器 但是我
  • “此应用程序已请求运行时以异常方式终止它”的原因是什么?

    Visual C 运行时抛出一个常见错误 此应用程序已请求运行时以异常方式终止它 请联系应用程序的支持团队以获取更多信息 该错误消息实际上是什么意思mean 让我用一个比喻来准确地解释我的问题 如果我看到一条消息 异常 访问冲突 0xc00
  • 当选项卡重新加载(chrome 扩展)时,如何运行此脚本?

    所以我想在指定 URL 中重新加载选项卡时运行脚本 它几乎可以工作 但实际上 id 不能 这是我的清单文件 manifest version 2 name Sample Extension description Sample Chrome
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • 串行 I/O 与 Windows/Windows CE 重叠/不重叠

    抱歉 这不是一个大问题 但更多的是帮助那些在这些特定问题上遇到问题的人 我正在解决的问题需要使用串行 I O 但主要在 Windows CE 6 0 下运行 然而 最近有人问我该应用程序是否也可以在 Windows 下运行 所以我开始着手解
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将
  • 为什么 fopen 无法打开已存在的文件?

    我在 Windows XP 上使用 Visual Studio 6 是的 我知道它很旧 构建 维护 C DLL 我遇到了 fopen 无法打开现有文件的问题 它总是返回 NULL 我试过了 通过将 errno 和 doserrno 设置为零
  • 导致崩溃转储的 Java 错误的解决方法

    我开发的一个程序偶尔会由于这个错误而导致 JVM 崩溃 http bugs java com bugdatabase view bug do bug id 8029516 http bugs java com bugdatabase vie
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • conio.h 不包含 textcolor()?

    我一直在考虑在我用 C 编写的 DOS 程序中使用颜色 有人告诉我conio h有textcolor 函数 但是当我在代码中使用它时 编译器 链接器会向我抛出错误 说我对该函数有未定义的引用 Does conio h真的有这个功能还是有人告
  • 需要从 DCOM 配置中删除对象 (DCOMCNFG)

    我们有一个带有 activex exe 和 com dll 的应用程序 安装后 我们会在 DCOM 配置中创建一个对象 如果我们尝试从 DCOM 配置中删除该对象 它就会关闭 直到我们再次重新打开它 想知道是否有任何程序可以从 DCOM 及
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or

随机推荐

  • 如何在Windows Phone 7应用程序开发中动态显示图像?

    我想动态显示图像 即 如果每当单击特定图像更多 4 到 5 次 时 该图像就会消失 并且新图像可以填充此位置 我想在窗口中动态显示图像使用 silverlight 的电话 7 我知道这是一个很老的问题 但我有几分钟的空闲时间 每四次点击屏幕
  • 使用 Prism 更改 Xamarin Forms 中的页面过渡动画

    是否可以使用 Prism 的 INavigationService 更改 Xamarin Forms 中的页面过渡动画 我希望在 Android 上有淡入淡出动画 就像使用默认的 Xamarin Forms PushAsync PopAsy
  • 查询在 Oracle 11g 上有效,但在 Oracle 8i 上失败

    我在 Oracle 11g 中运行此查询没有问题 select case when seqnum 1 then 1 when seqnum cnt then 0 end as value1 case when seqnum 1 then t
  • Python 字符串格式化:填充负数

    我想将整数格式化为字符串 以便在没有符号的情况下 它们将被零填充以具有至少两位数字 例如我想要 1 1 10 10 to be 01 01 10 10 具体来说 我想要负数 3 和非负数 2 具有不同的最小字符串长度 简单的数字填充详情he
  • 子 span 元素脱离父元素,flexbox / margin - 填充问题

    我阅读了类似问题的帖子 但仍然无法使其正常工作 当有大文本时 我试图使用文本省略号 JSFiddle https jsfiddle net heyrohit bxrpduxu fixIssue align items center thum
  • 具有多个/许多伪选择器/匹配的本机 Javascript querySelectorAll()

    如何在本机 Javascript querySelectorAll 中放置许多伪选择器 示例 我想搜索 id 以 id starting 开头并以 id ending 结尾的元素 找不到现有问题 因此自己制作并回答 对于 Native Ja
  • 我应该如何排列这些“有用”的分数?

    在我网站上的用户生成的帖子下 我有一个类似亚马逊的评级系统 Was this review helpful to you Yes No 如果有投票 我会在该行上方显示结果 如下所示 5 of 8 people found this repl
  • C 中 DBL_EPSILON 和 Machine-Epsilon 的混淆

    Machine Epsilon 似乎有两个定义 将实数舍入到下一个浮点数时的最大相对误差 满足 1 0 machine eps 1 0 的最小正数 首先 我不明白这两者是如何关联的 根据我的理解 第二个 DBL EPSILON 不符合定义
  • 给定素数 N,计算下一个素数?

    一位同事刚刚告诉我 出于与哈希相关的神秘原因 C 字典集合按素数调整大小 我直接的问题是 它如何知道下一个素数是什么 它们是否记录一个巨大的表或动态计算 这是一个可怕的非确定性插入运行时间 导致调整大小 所以我的问题是 给定 N 质数 计算
  • 在 virtualenv 中执行 os.system('python ')

    我正在使用一个virtualenv要执行脚本 在这个脚本中我调用 os system python anotherScript py 我的问题是脚本是否在同一个中执行virtualenv作为调用者脚本 很难说 但是如果您在激活的 virtu
  • git - 樱桃挑选 - 如何/为什么

    问题 您想测试某人开发的功能 但它只是 存在于一个严重过时的远程分支中 Source http wiki koha community org wiki Using Git Cherry Pick cherry pick是如何解决这个问题的
  • 如何创建一个自动关闭的 HTML5 标签,例如
    [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我基本上想制作一个不需要关闭的自定义标签并将CSS应用于它 它不应该看起来像这样
  • meanjs 如何实现管理仪表板

    Meanjs 使用 AngularJS 进行前端 MVC 并且是一个 SPA 应用程序 因此当管理仪表板与前端页面不同时 实现管理仪表板的最佳方法是什么 也许有两个接入点 我一直在寻找一种方法来实现这一目标 我在这里发布了我的搜索结果 首先
  • 我应该如何使用 pgAdmin 3 将数据从 CSV 导入到 Postgres 表中?

    我需要为此使用任何插件或库吗 我想先在本地系统上尝试这个 然后在 Heroku Postgresql 上做同样的事情 pgAdmin 从 1 16 开始就有用于数据导入的 GUI 您必须先创建表 然后才能轻松导入数据 只需右键单击表名称并单
  • 使用 Angular-DataTables 更新数据时会重置分页

    我们有一个使用 Angular DataTables 的 Web 表单 DataTables 1 10 10 Angular datatables v0 5 3 我们使用来自后端的 JSON 来提供数据 该表配置了分页 并且每 10 秒手动
  • 无法从 Amazon Lambda、相同 VPC 和正确的角色权限访问 RDS

    我无法在生产中从 Amazon Lambda 成功连接到 RDS 对于 Amazon Lambda 我使用无服务器框架 离线执行 sls 可以从本地主机连接 RDS 但在生产中 Amazon Lambda 不能 两者都位于同一 VPC 同一
  • symfony2:如何在 QueryBuilder 中使用 group_concat

    我有一个名为 位置 的嵌套集 使用 Gedmo 树 实体 实体 公寓 具有 location id 以及我需要做什么来映射称为 路径 的标量值以返回所有公寓的查询 在 Doctrine1 中 我有这样的代码 Add path to each
  • 以编程方式调用@Controller

    我正在将使用 Spring MVC 控制器实现的代码转换为使用注释构造型 Controller 一切都很顺利 除了一个问题 给定请求 响应 如何以编程方式处理基于注释的控制器的请求 以前 无论实现如何 我可以调用 controller ha
  • Python向用户输入文件路径添加反斜杠和引号,无法打开

    使用Python 3 9 我想 输入 文件路径 通过输入函数 然后我想打开该文件路径 我受到以下错误的阻碍 OSError Errno 22 Invalid argument C Users Hart Documents File txt
  • 如何创建清单文件以使用管理员权限启动应用程序?

    我想为我的 VB 6 0 程序创建一个清单文件 这样当我启动我的应用程序时 操作系统应该要求用户提供管理员权限 我还想知道如何将其嵌入到应用程序中 您实际上并没有在 VB 中创建清单文件 Windows 应用程序清单是一个标准文本文档 格式