【问题标题】:"Access denied" error when running a process from a UWP app从 UWP 应用运行进程时出现“访问被拒绝”错误
【发布时间】:2019-06-19 15:13:23
【问题描述】:

问题:在以下情况下,我如何使用 UWP 应用程序中的allowElevation 功能在我的带有 1809 更新的 Windows 10 桌面上以提升的权限执行代码。 This Stefan Wick 的好文章解释了从 UWP 应用到 WPF 应用的类似功能的使用,但在我的情况下,我使用的是类库而不是 exe。

详情:在我的 VS2019 的 UWP 项目中,我添加了.NET Standard 类库项目。我的一个 UWP 方法是调用我的类库项目的以下方法。但由于 UWP 的沙盒性质 - 正如预期的那样 - 应用程序在代码的 Process.Start() 行抛出 Access denied 错误。

public void Process_Start_Test()
{
   using (Process myProcess = new Process())
   {
       myProcess.StartInfo.UseShellExecute = false;
       myProcess.StartInfo.FileName = @"C:\DotNET2019\UWP\TestFolder\MyExeApp.exe";
       myProcess.StartInfo.CreateNoWindow = true;
       myProcess.Start(); //Access denied error here
   }
}

【问题讨论】:

  • 很确定这是不允许的——这也是超级不必要的,不是吗?您可能会提示用户打开应用程序

标签: c# uwp windows-10


【解决方案1】:

您不能从沙盒 UWP 应用引用的 .NET Standard 库中调用 Process.Start

您需要创建一个调用Process.Start 的实际提升进程 (.exe),正如Stefan 的博客文章所解释的那样。

完全信任的.exe 当然可以引用您定义了Process_Start_Test() 的类库,但是无论它是否在库中定义,都必须从完全信任的进程中调用该方法。

【讨论】:

  • 你的回答很好解释(而且切中要害)(谢谢)。更重要的是,您完全理解我的问题。
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 2018-05-17
  • 2022-12-10
  • 2022-07-26
  • 2014-07-07
  • 1970-01-01
相关资源
最近更新 更多