【问题标题】:UWP don't want to execute process as adminUWP 不想以管理员身份执行进程
【发布时间】:2021-07-05 07:06:39
【问题描述】:

我有代码:

// Execute msi
Process process = new Process();
process.StartInfo.FileName = "msiexec";
process.StartInfo.WorkingDirectory = Path.GetDirectoryName(msiPath);
process.StartInfo.Arguments = $"  /passive /i {Path.GetFileName(msiPath)}";
process.StartInfo.Verb = "runas";
process.StartInfo.UseShellExecute = true;
process.Start();
process.WaitForExit();

但我有错误:

此平台不支持 UseShellExecute。

或者如果我禁用 UseShellExecute

process.StartInfo.UseShellExecute = false;

由于管理员权限,程序无法执行

Sooo...如何在 UWP 中以管理员身份执行 msi?

【问题讨论】:

  • @ChrisBerlin 我不同意你的观点。对于菜单中的某些 UWP 应用程序,我可以单击“以管理员身份运行”。如果我不能动态请求权限,理论上我可以使用管理员权限启动应用程序。但我不知道 - 如何在实践中做到这一点
  • 请查看 Chris Berlin 发布的 API 文档,其中明确提到如果您在 UWP 应用程序中设置 ProcessStartInfo.UseShellExecute 属性将引发 PlatformNotSupportedException。你得到的行为是预期的。
  • 另一件事是您无法从 UWP 应用程序执行 msi。请在 WPF 或 Win32 应用上试用。
  • 您不能直接从 UWP 执行此操作 - 您必须在同一个安装文件夹中设置不同的 exe 才能通过此处概述的解决方法:stackoverflow.com/questions/49189353/…

标签: c# uwp process shellexecute


【解决方案1】:

首先,这里提到-ProcessStartInfo.UseShellExecute Property 如果您在 UWP 应用程序中设置 ProcessStartInfo.UseShellExecute 属性将引发 PlatformNotSupportedException。你得到的行为是预期的。其次,UWP 应用不支持Process.Start Method。要从你的 UWP 应用运行 exe 文件,我建议你使用FullTrustProcessLauncher Class

首先,您需要将exe文件复制并保存在UWP应用程序包中,例如Assets文件夹。然后请转到 Manifest 文件并添加 runFullTrust 受限功能.(App capability)。接下来,为 UWP 项目添加 Windows Desktop Extensions 的引用。最后,您可以调用await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync(); 从您的应用程序中启动该exe 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 2021-12-10
    • 1970-01-01
    • 2013-07-10
    • 2013-05-31
    • 2010-11-21
    • 1970-01-01
    相关资源
    最近更新 更多