非打包应用程序中的虚拟化appdata

时间:2017-08-19 15:20:47

标签: desktop-bridge

我有DAC转换的应用程序。首次启动时,它会将其中一个EXE复制到localappdata文件夹并启动它。

此EXE被复制到此文件夹中:

C:\Users\user\AppData\Local\Packages\MyApp_z4vxg0xscex6e\LocalCache\Local\MyApp

它成功启动并且GetCurrentPackageId失败,这意味着此EXE不是作为Appx应用程序运行,而是作为普通的Win32桌面应用程序运行。

问题在于我无法在其内部获得EXE的路径。 GetModuleFileName返回此信息:

C:\Users\user\AppData\Local\MyApp\myexe.exe
此路径的

GetFileAttributes返回-1。 GetCurrentDirectory返回相同的文件夹。

这是Windows Desktop Bridge平台的错误吗?有没有办法获得我正在运行的EXE所在的文件夹的路径?

P.S。 Windows 10版本1703(Build 15063.483)。

1 个答案:

答案 0 :(得分:0)

  

有没有办法获得我正在运行的EXE所在的文件夹的路径?

如果您将myexe.exe复制到上面描述的本地文件夹,那么您只需要获取本地文件夹路径。为此,您可以获取local folder,然后在UWP中获取路径属性,如下所示:

StorageFolder^ storageFolder = ApplicationData::Current->LocalFolder;
String^path = storageFolder->Path;
  

此路径的GetFileAttributes返回-1

UWP应用无权访问设备上的所有文件。默认情况下,应用程序可以访问某些文件系统位置,例如应用程序安装目录或应用程序数有关详细信息,请参阅File access permissions

C:\Users\user\AppData\Local\MyApp\myexe.exe直接访问GetFileAttributes可能无效。更多详情请参阅Skip the path