gpt4 book ai didi

c# - 从 ClickOnce 应用程序以普通用户身份启动进程

转载 作者:行者123 更新时间:2023-11-30 12:23:42 25 4
gpt4 key购买 nike

我们有一个 ClickOnce 应用程序,它使用

启动外部进程
p = new Process();
p.StartInfo.WorkingDirectory = Path.GetDirectoryName(exe);
p.StartInfo.FileName = Path.GetFileName(exe);
p.StartInfo.Arguments = arguments;
p.Start();

通常,人们会问是否可以将流程作为管理启动。但就我而言,情况恰恰相反:


我想确保此应用程序以登录用户身份启动。默认情况下,会发生这种情况 - 例如,当我测试它时。

但一些用户 (Windows 8.1) 报告说该 exe 是以管理员身份启动的。出于某种奇怪的原因,Windows 自动希望以管理员身份启动它,即使根本没有必要。如果他们右键单击 exe 并检查属性,则未选中以管理员身份运行此程序框!

查看文件夹中的exe文件时,显示UAC图标(如下例):

enter image description here

现在我想知道是否可以通过编程方式阻止该行为并以非提升状态启动进程,也许可以使用 StartInfo 属性?

最佳答案

如果应用程序需要 UAC,有两个原因:

  1. 有一个 list (嵌入到可执行文件或外部 list 中)需要这样做。
  2. Windows 根据特定条件决定该应用程序需要提升的权限。

正如您在问题中所说,同一可执行文件在某些​​机器上不需要 UAC,而在其他机器上需要 UAC - 很可能没有嵌入式 list ,而 Windows 决定此应用程序需要升级。

Here你会发现有些过时,但我希望 UAC 的相关架构仍然存在。在“安装程序检测技术”下,您会看到即使是“文件名包含诸如‘安装’、‘设置’或‘更新’之类的关键字”之类的简单内容,也可能会导致 Windows 在该可执行文件上强制使用 UAC。首先检查这是否以某种方式帮助您解决问题(例如在某些机器上可执行文件可能符合其中一些标准)。

如果这没有帮助,并且因为嵌入式 list 不太可能 - 您可以尝试为您请求 requestedExecutionLevel asInvoker 的 exe 创建外部 list (您可以在启动进程之前自动执行此操作)。将该 list (应命名为 .exe.manifest)放在问题 exe(不是您的 clickonce 应用程序)附近,看看是否有帮助。希望您知道如何创建 list 文件,如果不知道 - 您可以在 Google 上轻松找到它或在这里询问。请注意,如果可执行文件已经嵌入 list - 它将具有优先级(但这不太可能)。

关于c# - 从 ClickOnce 应用程序以普通用户身份启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35904059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com