如何解决如何使用Powershell从非高架.NET应用程序配置UWP应用程序
我有一个.NET 4.6.2应用程序,需要添加预配置的UWP应用程序。当前的计划是使用Process.Start()
启动powershell。假定UWP应用在exe路径中以“ test.appx”的形式出现。
这是代码:
var psi = new ProcessStartInfo
{
UseShellExecute = true,CreateNoWindow = false,Arguments = "Add-AppxProvisionedPackage -Online -PackagePath test.appx -SkipLicense",WindowStyle = ProcessWindowStyle.Hidden,FileName = "powershell.exe",Verb = "runas"
};
var proc = Process.Start(psi);
我正在使用runas
动词,因为配置命令需要提升。
该过程开始时没有抛出,但是没有配置应用程序,如果我使用proc.WaitForExit()
并检查ExitCode
,它将返回错误代码1。
如果我使用清单来要求主机应用程序具有提升的权限,那么它确实可以工作,但是我宁愿不需要提升权限来运行主机应用程序。
我想知道我设置ProcessStartInfo
的方式是否有问题?否则,是否有办法暂时提升主机进程?
解决方法
当以管理员身份运行powershell.exe时,它不使用当前文件夹作为其起始文件夹,而是进入C:\ WINDOWS \ system32下。
因此,找不到test.appx文件。
这应该有效:
var pathToAppx = Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),"test.msixbundle");
var psi = new ProcessStartInfo
{
UseShellExecute = true,CreateNoWindow = false,Arguments = $@"-NoExit &""Add-AppxProvisionedPackage -Online -PackagePath {pathToAppx} -SkipLicense;""",WindowStyle = ProcessWindowStyle.Normal,FileName = "powershell.exe",Verb = "runas"
};
var proc = Process.Start(psi);
proc.WaitForExit();
在我的示例中,我使用了已经可以使用的msixbundle,但它不会产生影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。