从正常应用程序调用具有提升权限的应用程序从普通特权帐户调用,从而导致放入程序文件时出现问题

时间:2017-04-14 08:43:21

标签: winforms launch elevated-privileges program-files

我有一个需要以普通权限运行的程序。为了防止盗版,我们在启动应用程序时启动了许可证管理器应用程序,该应用程序需要使用提升权限运行。在询问我们的供应商后,许可证管理器似乎在其app.manifest文件中添加了此提升权限,这是读取某种磁盘ID 信息所必需的,因此它是强制性的(我们不能减少其特权要求)。

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

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

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

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

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

操作系统:Windows 7

如果我方需要任何其他信息,请告诉我。感谢这方面的任何帮助。

1 个答案:

答案 0 :(得分:0)

对于程序文件目录存在问题,我很谦虚。

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

日志记录逻辑在许可证管理器(我们称之为许可管理器中定义的函数的程序,即编写日志)和从Program Files文件夹运行的应用程序之间共享。

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

原因结论:

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

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