2016-03-09 178 views
4

普通用户我们有开始与启动过程从ClickOnce应用程序

p = new Process(); 
p.StartInfo.WorkingDirectory = Path.GetDirectoryName(exe); 
p.StartInfo.FileName = Path.GetFileName(exe); 
p.StartInfo.Arguments = arguments; 
p.Start(); 

通常情况下,有人问是否有可能启动过程管理外部过程ClickOnce应用程序。但在我的情况下,它是相反的:


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

但是一些用户(Windows 8.1)报告说exe是以管理员身份启动的。出于某种奇怪的原因,Windows自动希望以管理员身份启动它,即使根本没有必要。如果他们右键单击该exe文件并检查Properties,则未检查框Run this program as an administrator

当检查文件夹中的exe文件,它显示了UAC图标(如下图所示):

enter image description here

现在我想知道,如果它是程序可以防止这种行为,并在启动过程中非升级状态,可能带有StartInfo属性?

+0

“wusa”是您的单击应用程序还是您产生的应用程序/进程。子进程应该从启动它的应用程序开始。 – Plutonix

+0

不,它只是一个随机图片,显示了当Windows(出于某种奇怪的原因)让用户以管理员身份启动程序时,可执行图标的外观。 – andreas

+0

你是否控制从clickonce开始的外部exe文件? – Evk

回答

0

也许这会帮助你? launch C# exe without prompting UAC on Windows 7

添加到您的清单:

requestedExecutionLevel level="asInvoker" uiAccess="false"

“这可能是因为您的第三方DLL必须在提升模式下运行,所以你最好的选择就是以管理员身份运行绕过UAC。提示不以管理员身份运行是一个长期复杂的过程”

+1

以管理员身份运行clickonce应用程序并不容易,因为它不是那样的。有解决方法,但我最好重写其他应用程序的“开始”选项,因为没有理由需要管理员权限。 – andreas

1

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

  1. 这里有一个清单(嵌入可执行文件,或外部的),这需要。
  2. Windows根据某些条件决定应用程序需要相当多的权限。

因为当你在你的问题,相同的可执行文件并不需要UAC在某些机器上,而没有对别人要求 - 最有可能是没有嵌入清单,这是视窗谁决定这个应用程序需要evelation。

Here你可以找到有点过时,但我希望仍然相关的架构的UAC。在“安装程序检测技术”下,你会看到即使是简单的东西,如“文件名包含关键字,如”安装“,”设置“或”更新“,可能会导致Windows强制UAC在该可执行文件上。首先检查这是否能帮助你解决你的问题(就像在某些机器可执行文件中匹配某些标准一样)。

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

0

您在创建新流程实例时没有指定任何帐户信息,这样做依赖于使用运行当前进程的相同用户帐户的默认行为。

对于某些获得“以管理员身份运行”提示的用户: 可能是机器上的安全规则以某种方式将可执行文件标识为不安全。试着要求你的顾客检查他们看到的应用程序的属性页面是否有“解除阻止”按钮。如果是这样,让他们点击“解锁”。这将消除未来的UAC提示。

相关问题