【问题标题】:Calling an application with elevated Privileges from a normal privileged account from normal application causing issue when placed in Program Files从普通应用程序的普通特权帐户调用具有提升权限的应用程序会导致放置在 Program Files 中时出现问题
【发布时间】:2017-04-14 08:43:20
【问题描述】:

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

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

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

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

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

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

操作系统:Windows 7

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

【问题讨论】:

  • 事件查看器中有此错误的痕迹吗?
  • @kennyzx,我在哪里可以找到事件查看器?
  • 谷歌可以提供帮助。或者通过执行“eventvwr.exe”
  • @kennyzx,感谢您向我介绍事件查看器的世界。它看起来是一个很棒的工具,看起来很有前途。

标签: winforms launch elevated-privileges program-files


【解决方案1】:

我很抱歉假设 Program Files 目录存在问题。

原来License Manager写的日志是写在当前应用执行文件夹中的。该问题是由于在应用程序没有将文本文件写入此文件夹的权限时尝试将日志写入 Program Files 文件夹而引起的。

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

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

原因结论:

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

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

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 2021-12-30
    • 2013-02-24
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多