我有一个需要以普通权限运行的程序。为了防止盗版,我们在启动应用程序时启动了许可证管理器应用程序,该应用程序需要使用提升权限运行。在询问我们的供应商后,许可证管理器似乎在其app.manifest
文件中添加了此提升权限,这是读取某种磁盘ID 信息所必需的,因此它是强制性的(我们不能减少其特权要求)。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
如果应用程序位于普通文件夹中,则应用程序会成功启动许可证管理器。但是,当它被放置在Program Files文件夹中时,它似乎在启动时关闭而没有暗示。
我们还检查了使用普通凭据运行应用程序而不添加许可证管理器(它工作正常)。
我们是否需要在注册表或其他一些Windows设置中更改某些设置,以启用从普通帐户启动提升的特权应用程序。或者可能需要在代码启动部分添加一些代码片段,以启用此方案。
我们甚至尝试将在Program Files中创建的文件夹粘贴到桌面(它也运行正常)。
操作系统:Windows 7
如果我方需要任何其他信息,请告诉我。感谢这方面的任何帮助。
答案 0 :(得分:0)
对于程序文件目录存在问题,我很谦虚。
事实证明,许可证管理器编写的日志正在当前的应用程序执行文件夹中写入。当应用程序没有将文本文件写入此文件夹的权限时,尝试将日志写入Program Files文件夹会导致此问题。
日志记录逻辑在许可证管理器(我们称之为许可管理器中定义的函数的程序,即编写日志)和从Program Files文件夹运行的应用程序之间共享。
我们将日志创建文件夹更改为AppData文件夹。这导致应用程序成功启动。
原因结论:
从没有管理员权限的应用程序中将日志文件写入Program Files文件夹。
注意:我已经添加了这篇文章,这个答案纯粹是为了帮助像我这样的人,以防他们在这种情况下没有解决方案。