确定C#应用程序是否作为桌面桥中的UWP应用程序运行(项目百年)

时间:2017-12-18 22:29:46

标签: c# uwp runtime desktop-bridge project-centennial

如何检查应用程序是否作为UWP运行?

Almost the same question,但我需要它用于C#,而不是C ++。

如果我尝试获取var stream = new FileStream(System.Web.Hosting.HostingEnvironment.MapPath("~/App_Data/client_secret.json"), FileMode.Open, FileAccess.Read) 并且应用程序作为Win32应用程序运行,则会抛出异常:

  

未处理的类型' System.InvalidOperationException'   发生在applcation.exe中附加信息:该进程没有   包裹身份。 (出现HRESULT异常:0x80073D54)

如何毫无例外地检查申请类型?

2 个答案:

答案 0 :(得分:3)

您可以使用P / Invoke在C#中调用GetCurrentPackageFullName方法。您可以使用DesktopBridge.Helpers包来为您执行此操作。它也适用于Windows 7。

DesktopBridge.Helpers helpers = new DesktopBridge.Helpers(); 
bool isUwp = helpers.IsRunningAsUwp(); 

如果您有兴趣,可以在此处查看如何实施:https://github.com/qmatteoq/DesktopBridgeHelpers/blob/master/DesktopBridge.Helpers/Helpers.cs

这是Nuget包: https://www.nuget.org/packages/DesktopBridge.Helpers/

答案 1 :(得分:1)

您是否看过这篇MSDN文章? Desktop Bridge – Identify the application’s context

它有一个示例,根据运行模式( win32桌面应用程序或桌面桥应用程序)显示应用程序的行为方式。