启动时在清单中运行uiAccess=true的C#WPF应用程序

启动时在清单中运行uiAccess=true的C#WPF应用程序,c#,windows,scheduled-tasks,C#,Windows,Scheduled Tasks,应用程序需要位于metro之上,因此需要使用uiAccess标志。这是应用程序中的最新更改。在以前的版本中,如果未设置uiAccess标志,我们可以使用此计划任务将应用程序设置为在用户访问上运行: 2014-04-23T11:31:11.9188616 MU15\Utente 真的 MU15\Utente 互动电视 高可用性 无知的新 假的 假的 假的 真的 假的 假的 假的 真的 真的 假的 假的 假的 PT0 7. PT1M 3. “C:\ProgramFiles(x86)\path\to

应用程序需要位于metro之上,因此需要使用
uiAccess
标志。这是应用程序中的最新更改。在以前的版本中,如果未设置
uiAccess
标志,我们可以使用此计划任务将应用程序设置为在用户访问上运行:


2014-04-23T11:31:11.9188616
MU15\Utente
真的
MU15\Utente
互动电视
高可用性
无知的新
假的
假的
假的
真的
假的
假的
假的
真的
真的
假的
假的
假的
PT0
7.
PT1M
3.
“C:\ProgramFiles(x86)\path\to\application.exe”
我们最近添加了以下应用程序清单:


计划任务现在失败,错误为0x800702e4:请求的操作需要提升

我们尝试在
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
中放置快捷方式,但没有成功


有没有一种方法可以运行设置了
uiAccess
标志的应用程序?

问题是任务计划程序默认使用
CreateProcess
,这对运行清单需要提升的进程不起作用:您需要使用
ShellExecuteEx

可能还有其他方法可以做到这一点,但使用任务调度器,至少有一种方法是将任务配置为在任务已在运行时停止其他现有实例

通过GUI:
设置->“如果任务已在运行(等)”
,设置为
“停止现有实例”
,或在XML中:

停止存在

我不能100%确定是否以评论的形式发布,但请尝试将任务调度程序上的
“如果任务已在运行(blablabla)”
设置为
“停止现有实例”
。这(理论上)应该使它使用
ShellExecuteEx
而不是
CreateProcess
,这在您需要提升应用程序清单时是必需的。我真的没有时间来测试它,因此有一条评论。(顺便说一句,应该是
StopExisting
)它成功了!非常感谢,把它作为一个答案贴出来,我会接受它:-)好了。很高兴worked@ale你能找到Win10的解决方案吗?我们在Windows 10机器上尝试了这个解决方案,但它不起作用(我们得到的是相同的0x800702e4错误),你对这个问题也有一些线索吗?@ale不,不是真的。。。我使用的是Windows 10框,但是我没有任何带有
uiAccess=true
清单的应用程序可供试用。。。可能以后再试试,我现在正在做其他事情,无法测试