0

我有一个需要以正常权限运行的程序。为了防止盗版,在我们的应用程序启动时,我们会启动一个需要以Elevated Privileges运行的License Manager应用程序。在询问我们的供应商后,License Manager 似乎在其文件中添加了这种提升的权限,这是读取某种磁盘 ID信息所必需的,因此这是强制性的(我们不能降低其权限要求)。app.manifest

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

如果将许可证管理器放置在普通文件夹中,则应用程序会成功启动许可证管理器。但是,当它放在 Program Files 文件夹中时,它似乎在启动时关闭,没有任何提示。

我们还检查了在不添加许可证管理器的情况下使用正常凭据运行应用程序(它工作正常)。

我们是否需要在注册表或其他一些 Windows 设置中更改某种设置,以启用从普通帐户启动提升的特权应用程序。或者可能需要在代码启动部分添加一些代码片段来启用这种情况。

我们甚至尝试将在 Program Files 中创建的文件夹粘贴到桌面(它也运行良好)。

操作系统:Windows 7

如果我需要任何其他信息,请告诉我。对此方向的任何帮助表示赞赏。

4

1 回答 1

0

假设程序文件目录有问题,我很谦虚。

事实证明,License Manager写入的日志正在写入当前应用程序执行文件夹中。当应用程序没有将文本文件写入此文件夹的权限时,尝试将日志写入 Program Files 文件夹会导致该问题。

日志记录逻辑在许可证管理器(从程序中我们调用了一个在许可证管理器中定义的函数,它正在写入日志)和从 Program Files 文件夹运行的应用程序之间共享。

我们将日志创建文件夹更改为 AppData 文件夹。这导致应用程序成功启动。

原因结论:

从没有管理员权限的应用程序将日志文件写入 Program Files 文件夹。

注意:我添加这篇文章和这个答案纯粹是为了帮助像我这样的其他人,以防他们在这种情况下没有解决方案。

于 2017-04-15T10:07:03.953 回答