【问题标题】:How to grant elevation with Delphi如何使用 Delphi 授予提升
【发布时间】:2012-05-15 08:53:36
【问题描述】:

我编写了一个数据库应用程序,可将数据从 excel 文件导入 Access 数据库。

我在运行应用程序、将记录插入数据库时​​从来没有遇到过麻烦,但是当我运行将数据从 Excel 导入 Access 的函数时,我收到以下警告:

请求的操作需要提升 - 按代码:

LAccess := CreateOleObject('Access.Application');

是什么原因造成的,有没有办法解决它

【问题讨论】:

    标签: delphi ms-access delphi-xe2 elevated-privileges


    【解决方案1】:

    CreateOleObject delphi 函数内部调用需要提升的CoCreateInstance WinApi 方法。你有几个选择来处理这个问题。

    1) 向您的应用添加清单,包括 requested execution levelrequireAdministrator

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
        name="Your app name goes here"
        processorArchitecture="x86"
        version="5.1.0.0"
        type="win32"/>
    <description>your app description goes here</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
               type="win32"
               name="Microsoft.Windows.Common-Controls"
               version="6.0.0.0"
               processorArchitecture="x86"
               publicKeyToken="6595b64144ccf1df"
               language="*"
            />
         </dependentAssembly>
      </dependency>
       <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
          <security>
          <requestedPrivileges>
            <requestedExecutionLevel
              level="requireAdministrator"
              uiAccess="false"/>
          </requestedPrivileges>
        </security>
       </trustInfo>
    </assembly>
    

    2) 您可以启动一个提升的辅助进程来执行该任务或创建一个运行提升的 COM 对象,您可以在这些 MSDN 条目中找到更多信息

    【讨论】:

    • processorArchitecture="*" 支持表示所有处理器架构。
    猜你喜欢
    • 2016-09-12
    • 2019-05-21
    • 2022-11-03
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多