用 VC6 制作 windows 7 8 以管理员权限运行的程序

来源:互联网 发布:时间轴软件 编辑:程序博客网 时间:2024/06/06 23:58

Windows 7/8 的系统安全机制得到了很大的提高,不同的程序根据功能可以在不同的权限级别下运行,新的程序设计工具比如 Visual Studio 2005 以后的版本编译生成的程序都具备这种权限请求机制,但早期的 Visual C++ 6.0 则由于太过古老,生成的程序需要手工做一些设定才能获取合适的权限。

  1. 1

      Win7/8 是以一份程序集清单 Assembly Manifest 文档来获取程序需要的权限信息的,这份清单可以以资源形式内嵌入应用程序,也可以以外置文件形式来和程序放置在一起,如果你能够重新编译程序,则建议使用第一种,使用内嵌式程序清单的程序在 Win7/8 中的图标会有盾牌标志,而使用外置形式则没有。

      程序集清单的内容如下:

    <?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="test.exe.manifest"
       type="win32"
    />
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
       <security>
           <requestedPrivileges>
               <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
           </requestedPrivileges>
       </security>
    </trustInfo>
    </assembly>

      上述清单指定了该程序运行需要管理员权限,如果需要使用其他权限,则可以用以下三者之一替换其中的 requestedExecutionLevel 节点。

    <!-- 普通权限 -->

    <requestedExecutionLevel level="asInvoker" uiAccess="false" />

    <!-- 管理员权限 -->

    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

    <!-- 最高权限 -->

    <requestedExecutionLevel level="highestAvailable" uiAccess="false" />


      对于外置程序集清单,可以将上述内容的文件以 应用程序名.Manifest 的文件名和程序放置在同一目录下即可,比如名为 test.exe 的应用程序集清单应命名为 test.exe.manifest 。

      接下来重点讲述第一种内嵌形式的程序集清单如何设置

  2. 2

      在 VC6 中切换到资源视图,在资源节点上点击右键,选择 “Insert”插入新资源

    ,然后选择自定义资源类型 "Custom",并输入类型:24,然后在该资源上点击右键,设置资源 ID 为 1

    用 VC6 制作 WIN7/8 下以管理员权限运行的程序
    用 VC6 制作 WIN7/8 下以管理员权限运行的程序
    用 VC6 制作 WIN7/8 下以管理员权限运行的程序
    用 VC6 制作 WIN7/8 下以管理员权限运行的程序
  3. 3

      双击该资源类型 24,将上述 manifest 文件内容粘贴到资源里,保存,然后重新编译生成应用程序即可。

    用 VC6 制作 WIN7/8 下以管理员权限运行的程序
  4. 4

      用上述方法生成的应用程序,在 Win7/8 系统里图标会有盾牌字样,双击此应用程序,会弹出用户账户控制的提示信息。

    END

注意事项

  •   选择合适的权限而不是把所有程序都设置为需要管理员权限,如果你的应用程序并不涉及系统关键操作,则无需做此设置,因为这会限制你的应用程序使用,在一些无法获取管理员权限的场合(比如有权限要求的办公用电脑)会带来烦恼。

0 0
原创粉丝点击