C# 在UWP应用程序中获取计算机上任何文件的路径
我是第一次开发UWP应用程序。我总是使用Windows窗体和WPF,但这些应用程序的潜在设计非常出色,但问题是它们有点像沙箱,特别是对于我当前的项目。基本上,我正在制作一个游戏启动器,在那里你可以添加你的游戏,程序会创建一个游戏列表。(用现代Windows 10材质设计,可以把它想象成一种适用于一切事物的蒸汽) 现在,我几乎做了所有的事情,但有两件事。首先,也是最重要的,是找到通往游戏的道路。我创建了一个文件选择器,我可以拾取.exe文件,我可以获取它们的名称,但是C# 在UWP应用程序中获取计算机上任何文件的路径,c#,.net,uwp,storagefile,C#,.net,Uwp,Storagefile,我是第一次开发UWP应用程序。我总是使用Windows窗体和WPF,但这些应用程序的潜在设计非常出色,但问题是它们有点像沙箱,特别是对于我当前的项目。基本上,我正在制作一个游戏启动器,在那里你可以添加你的游戏,程序会创建一个游戏列表。(用现代Windows 10材质设计,可以把它想象成一种适用于一切事物的蒸汽) 现在,我几乎做了所有的事情,但有两件事。首先,也是最重要的,是找到通往游戏的道路。我创建了一个文件选择器,我可以拾取.exe文件,我可以获取它们的名称,但是file.Path属性不起作用
file.Path
属性不起作用,它返回一个空路径。我原以为这可能是因为UWP的沙盒设计,但我深陷其中,我真的不想放弃它
第二个问题是启动这些文件。我使用Steam的特定URI在Steam游戏上实现了这一点。("steam://rungameid/xxxxxx“其中xxxxxx是游戏id),但如果我只是将路径作为URI,则它不起作用
你觉得怎么样?有什么解决办法吗?让我向您展示一些相关代码:
public async void SelectEXE()
{
var picker = new Windows.Storage.Pickers.FileOpenPicker
{
ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail,
SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary
};
picker.FileTypeFilter.Add(".exe");
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
stuffWrite[0] = file.Name;
stuffWrite[1] = file.Path;
count++;
WriteCount();
WriteItem(count, string.Join(",", stuffWrite));
UpdateList();
}
}
async void LaunchGame(string uriToLaunch)
{
Uri uri = new Uri(uriToLaunch);
games_list.Items.Add(uriToLaunch);
uri = new Uri("steam://rungameid/730"); //replace with actual path
await Windows.System.Launcher.LaunchUriAsync(uri);
}
正如Ahmed指出的那样,沙盒限制使得从该属性获取路径无法可靠地工作 至于启动,您不能直接从UWP应用程序启动exe文件。这根本不可能,因为设计明确限制了它这样做。您的问题的一些变通解决方案:
我以前也从未使用过UWP,但我只是尝试了一下您的代码和
文件。Path
很好地返回了文件的完整路径。旁注:。但是,我刚刚检查了一下,它说:“不要依赖此属性访问文件,因为某些文件可能没有文件系统路径。例如,如果文件由URI支持,或者是使用文件选择器拾取的,则不保证该文件有文件系统路径。”但它们没有提及任何替代方法,因此我不确定。或许有UWP经验的人可以帮你。祝你好运谢谢是的,我不知道,这很奇怪。我想我会选择帮助者。这似乎是一个好主意,因为我可以有一个本地的现代设计,而后台处理是由一种我习惯的程序完成的。非常感谢。