我正在研究部署在Windows Standard Embedded 7平台上的软件。它使用了inpout32.dll,这是一个流行的库,用于从/到并行端口的读写。这个图书馆有点鬼鬼祟祟。它不是通过安装程序安装,而是懒洋洋地安装 - 当它加载并进行调用时,它会查看硬件并选择一个驱动程序,该驱动程序是程序资源的一部分。然后将其复制到Windows驱动程序目录。
问题是如果程序未以管理员身份运行,则此副本将不会成功。而软件就死了。所以我正在寻找一个优雅的解决方案,不涉及关闭用户帐户控制(甚至可以工作?)。在清单中指示程序应该以管理员模式运行将是一种方式,但是这会弹出一个对话框,我不希望每次都发生这种情况。有没有办法指定“仅作为管理员运行一次”?
假设没有,你能给我什么建议?
答案 0 :(得分:1)
如果您无法控制代码,则需要培训用户。我使用了一些旧的应用程序。我以管理员身份运行它们,因此他们更新注册表或者他们需要做的任何事情,然后再也不会。
如果你写了这个应用程序,这是一种处理它的方法。编写一个帮助程序执行需要提升的东西。当应用程序运行时,检查您是否需要完成任何操作(例如,存在注册表项等等,您可以检查而不会被提升)。如果不是:
主应用程序从未升级,用户知道发生了什么,UAC提示并不出乎意料。
答案 1 :(得分:0)
我喜欢@Kate Gregory的回答,但他决定先尝试别的。这是编写一个安装程序帮助程序,它将静默调用Install()重写上的一个inpout32函数。由于这是通过管理员权限完成的,因此很高兴将嵌入式驱动程序复制到system32,瞧!