[英]Process.Start() Open exe file nothing hapen in UWP
没有错误只是什么也没发生,文件目标仍然在我的路径中
public void keyboard(){
ProcessStartInfo touchkey = new ProcessStartInfo(@"C:\Program
Files\Common Files\microsoft shared\ink\TabTip.exe");
touchkey.WorkingDirectory = @"C:\";
touchkey.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(touchkey);
}
The suggested solution threw a `UnauthorizedAccessException`:
var path = @"ms-appx://C:/Program Files/Common Files/microsoft
shared/ink/TabTip.exe";
var file = await
Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(path); 等待 Windows.System.Launcher.LaunchFileAsync(文件);
我尝试使用 FullTrustProcessLauncher 它工作正常,但就像键盘 tabtip.exe 之前的代码不显示我不知道我应该做什么
await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
{
FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
});
我知道您正在尝试根据exe
的路径显示屏幕键盘。 我建议一种更好的方法是触发新的启用触摸的键盘,而无需使用InputPane
API从UWP进行额外的麻烦,就可以轻松实现这一点:
var pane = InputPane.GetForCurrentView();
pane.TryShow();
如果出于某种原因而更喜欢旧的屏幕键盘,则现有代码有两个问题。
首先,使用ms-appx:
方案来引用应用程序安装路径中的文件。 您所需的路径是绝对路径,因此您不能在那里使用它。
其次,由于这是硬盘驱动器上的任意路径,因此您无权直接访问它(因为UWP应用程序在沙箱中运行,并且出于安全原因无法直接访问文件系统)。 要访问文件,您将需要声明broadFileSystemAccess
功能,该功能随后将允许您初始化StorageFile
实例。 例如,您可以检查此SO问题以了解如何做到这一点。
注意:我没有VS PC,所以我不能确定这是否允许您启动可执行文件,因为这似乎是额外的权限,可能无法授予该权限。 万一失败,我强烈建议第一个解决方案。
由于安全限制,UWP应用程序是沙盒式的,无法直接启动其他进程。
启动其他应用程序的唯一方法是,如果这些应用程序注册了URI,或者某个应用程序是特定文件类型的默认处理程序。
在这些情况下,可以使用诸如LaunchUriAsync
或LaunchFileAsync
确保已编辑清单文件,并在应用程序中添加了用于完全信任过程的扩展名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.