gpt4 book ai didi

c# - UWP:如何启动位于特定目录中的 exe 文件?

转载 作者:太空狗 更新时间:2023-10-29 21:11:45 29 4
gpt4 key购买 nike

我正在尝试从 UWP 应用启动位于 C:/Program Files (x86)/App 中的 exe。我该怎么做。

我可以使用 UWP 的 Windows 桌面扩展来启动 exe 文件,添加隐藏复制代码

<Extensions>
<desktop:Extension Category="windows.fullTrustProcess" Executable="Assets\app.exe" />
</Extensions>

到 Package.appmanifest 并调用它

await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();

在主类中。但是我需要将 app.exe 添加到项目的 Assets 目录
我的问题是,如果 exe 文件位于其他目录中,我如何在不准确添加 exe 文件的情况下启动它。
谢谢

最佳答案

今天我编写了一个程序来成功地从 UWP 启动任何 .exe 程序。想要分享这个过程以造福他人。这是对 stefan Wick MSFT 的回答的补充。首先需要更新 package.appmanifest。这是我在 package.appmanifest 中的内容:

<?xml version="1.0" encoding="utf-8"?>

<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"

IgnorableNamespaces="uap mp">

<Identity
Name="217d09c4-aa67-4403-939f-518a55d46f16"
Publisher="CN=admin"
Version="1.0.0.0" />

<mp:PhoneIdentity PhoneProductId="217d09c4-aa67-4403-939f-518a55d46f16" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

<Properties>
<DisplayName>App1</DisplayName>
<PublisherDisplayName>admin</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>

<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.14393.0" MaxVersionTested="10.0.16299.0" />
</Dependencies>

<Resources>
<Resource Language="x-generate"/>
</Resources>

<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="App1.App">
<uap:VisualElements
DisplayName="App1"
Square150x150Logo="Assets\Square150x150Logo.png"
Square44x44Logo="Assets\Square44x44Logo.png"
Description="App1"
BackgroundColor="transparent">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"/>
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>

<Extensions>

<desktop:Extension Category="windows.fullTrustProcess" Executable="Assets\Launcher.exe" >
<desktop:FullTrustProcess>
<desktop:ParameterGroup GroupId="ChromeGroup" Parameters="chrome.exe"/>
<desktop:ParameterGroup GroupId="WordGroup" Parameters="WINWORD.exe"/>
</desktop:FullTrustProcess>
</desktop:Extension>
</Extensions>

</Application>
</Applications>

<Capabilities>

<Capability Name="internetClient"/>
<rescap:Capability Name="runFullTrust" />

</Capabilities>

</Package>

<Extensions> 内的代码标签是负责启动可执行文件的标签。带有<Capabilities>的代码标签添加启动可执行文件的能力或权限。限制性能力如runFullTrust它下面有绿色的绿线。这不是错误,程序将运行而不会出现任何错误。 Launcher.exe上面的代码中是一个控制台应用程序。我在文本编辑器中编写代码并从中创建 Launcher.exe。 Launcher.exe 的代码是这样的:

using System;  
using System.IO;
using System.Diagnostics;
using System.Reflection;
class Program
{
static void Main(string []args)
{
try
{

if(args.Length!=0)
{
string executable=args[2];
/*uncomment the below three lines if the exe file is in the Assets
folder of the project and not installed with the system*/
/*string path=Assembly.GetExecutingAssembly().CodeBase;
string directory=Path.GetDirectoryName(path);
process.Start(directory+"\\"+executable);*/
Process.Start(executable);
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
}

}
}

将此 Launcher.exe 控制台应用程序保存在 UWP 项目的 Assets 文件夹中。不允许 UWP 启动 .exe 应用程序。但是 UWP 应用调用此代码来启动任何 .exe 程序。 GroupId ChromeGroup 用于通过将 chrome.exe 参数传递给 Launcher.exe 来启动 chrome 浏览器。 GroupId WordGroup 用于通过将 WINWORD.exe 参数传递给 Launcher.exe 来启动 MS Word。将参数传递给 Launcher.exe 的代码是:

`private async void Button_Click(object sender, RoutedEventArgs e)
{
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("ChromeGroup");
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("WordGroup");
}`

点击上方的按钮 Api将 exe 文件的名称传递给 Launcher.exe程序。它通过接受 GroupId 来做到这一点作为参数。 ApiWindows.ApplicationModel 下可用命名空间。

编辑:

您要启动的可执行文件可能未安装在系统上。它可能不会与您的应用程序一起打包在 Assets 文件夹中。你可以在 Parameters 中给出可执行文件的完整路径属性。

关于c# - UWP:如何启动位于特定目录中的 exe 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49189353/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com