如何检查应用程序是否作为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)
如何毫无例外地检查申请类型?
答案 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桌面应用程序或桌面桥应用程序)显示应用程序的行为方式。