2014-02-17 77 views
1

我正在使用部署到Windows Standard Embedded 7平台上的软件。它利用inpout32.dll,一个流行的库来读取和写入并行端口。这个图书馆有点鬼鬼祟祟。它不是通过安装程序安装,而是延迟安装 - 当它加载并调用时,它会查看硬件并选择属于程序资源一部分的驱动程序。这会被复制到Windows驱动程序目录。仅以管理员身份第一次运行程序

问题是如果程序没有以管理员身份运行,则此副本将不会成功。该软件就会死亡。因此,我正在寻找一种优雅的解决方案,不涉及关闭用户帐户控制(即使工作?)。在清单中指出程序应该以管理员模式运行将是一种方式,但这会弹出一个对话框,我不希望每次都发生这种情况。有没有办法指定“以管理员身份运行一次”?

假设没有,您可以给我什么建议?

+0

为图书馆做一个合适的安装程序。 –

回答

1

如果您无法控制代码,您需要培训用户。我使用了一些旧应用程序。我以管理员身份运行它们,以便更新注册表或无论它们需要做什么,然后再也不用再做。

如果你写这个应用程序,这是一个处理它的方法。写一个助手的exe文件,完成需要提升的事情。当应用程序运行时,检查是否需要执行任何操作(例如,注册表项存在或类似内容,您可以在不升高的情况下进行检查)。如果不是:

  • 建立一个对话框,告诉用户在[某些任何ABC]功能可以工作之前[需要]完成任何操作。 OK按钮上有一个UAC屏蔽。根据用户的不同,告诉他们如果他们对即将到来的UAC对话没有说“OK”,他们就不会获得他们的功能。
  • OK,启动助手exe文件 - 它应该有一个需要提升的嵌入式清单。有很多方法可以从你的代码中提升它,但为什么要这么麻烦呢,这个东西的全部目的就是做一个管理事情
  • 帮手完成它的事情然后退出。对于你的具体情况,我打电话,你知道会导致延迟加载。

主应用程序从未提升,用户知道发生了什么,UAC提示并非意外。

0

我喜欢@Kate Gregory的回答,但决定先尝试别的。这是编写一个安装程序助手,它会默默地调用Install()覆盖中的一个inpout32函数。由于这是通过管理员权限完成的,所以它很高兴地将嵌入式驱动程序复制到system32,并且瞧!

相关问题