我正在将libgit2移植到Git GUI for UWP。一个场景是让用户使用FolderPicker::PickSingleFolderAsync选择存储库文件夹,然后将其添加到FutureAccessList中,以便应用程序可以访问它进行通常的 Git 功能。问题在于底层 Git 代码严重依赖 Win32 API 文件和文件夹访问,如
FindFirstFile
、MoveFileEx
等,用于文件和文件夹的stat
、open
等操作,应用程序尝试访问时会报告Permission denied。(该代码对应用程序本地存储中的文件夹有效。我还检查了通常的stdio
只能在其中工作。不能在其中使用fopen
)。
这个问题有可行的解决方案吗?权限不应该在不同支持的API之间得到尊重吗?也许我错过了什么?(我不敢尝试移植libgit2
所需的所有POSIX。一方面,它保证是低效的。另一方面,它极易出错,例如编写与open
兼容的mmap
。)
libgit2
并没有提供通过文件夹句柄打开存储库的 API。除非我执行不希望执行的操作,即查找和重定向库正在使用的所有可能的 Win32 API,例如MapViewOfFile
等,否则它将无法正常工作。 - An HoaStorageFile
权限,那将是很棒的。(我的意思是当用户通过选择器选取Storage(File|Folder)
时,应用程序应能够通过传统的API端点访问底层存储。) - An Hoa