微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UWP 不想以管理员身份执行进程

如何解决UWP 不想以管理员身份执行进程

我有代码

// 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?

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。