我有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)。
答案 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。