Sqlite 在通用Windows平台应用程序中在用户之间共享数据文件

Sqlite 在通用Windows平台应用程序中在用户之间共享数据文件,sqlite,win-universal-app,data-sharing,Sqlite,Win Universal App,Data Sharing,我即将开始使用通用Windows平台(Windows 10)开发业务线应用程序。应用程序的要求之一是将数据从服务器同步到本地SQLite数据库;这是必需的,因为应用程序需要在没有网络连接的情况下可用 可能有多个(windows域)用户将访问同一设备上的应用程序,有时只是通过“交换用户”,有时通过注销第一个用户并作为新用户登录 我意识到UWP应用程序是在用户级别安装的,但是我希望能够在这些用户之间共享SQLite数据库,而不是强迫每个用户下载自己的数据副本 这可能吗?我很难在中找到任何关于此类共享

我即将开始使用通用Windows平台(Windows 10)开发业务线应用程序。应用程序的要求之一是将数据从服务器同步到本地SQLite数据库;这是必需的,因为应用程序需要在没有网络连接的情况下可用

可能有多个(windows域)用户将访问同一设备上的应用程序,有时只是通过“交换用户”,有时通过注销第一个用户并作为新用户登录

我意识到UWP应用程序是在用户级别安装的,但是我希望能够在这些用户之间共享SQLite数据库,而不是强迫每个用户下载自己的数据副本

这可能吗?我很难在中找到任何关于此类共享的参考资料,但当然,这些文档是新的,远未完成

我想在一天结束时,我正在寻找一个文件夹的访问权限,该文件夹可供在同一设备上运行该应用程序的任何用户访问,例如桌面上可用的“x:\Users\Public”文件夹,但不必要求用户通过任何选择器控件提供对该文件夹的访问权限,而只需能够“打开”它


谢谢。

如果有人遇到此问题,此功能现在可以使用,如下所述:

我们引入了一个新的存储位置Windows 10 ApplicationData.SharedLocalFolder,它允许一个应用程序的多个用户共享本地数据。显然,这个功能只对多人使用的设备感兴趣。对于此类场景,例如在教育用途中,将任何大型下载放在共享本地目录中可能是有意义的。好处有两个:任何用户都可以访问这些文件,而无需重新下载,还可以节省存储空间

请记住,只有当计算机具有正确的组策略时,共享本地才可用,否则当您调用ApplicationData.Current.SharedLocalFolder时,将返回空结果

为了启用共享本地计算机,计算机管理员应启用相应的策略

或者,管理员可以在HKLM\SOFTWARE\Policys\Microsoft\Windows\CurrentVersion\AppModel\StateManager下创建一个名为AllowSharedLocalAppData的注册表DWORD值,其值为1

请注意,ShareLocal中的数据存储仅在设备上安装应用程序且系统不会备份应用程序时才会持久化


在解决方案资源管理器中,右键单击Package.appxmanifest,然后单击ViewCode,在两个项目中此文件的末尾添加以下代码:

<Extensions>
  <Extension Category="windows.publisherCacheFolders">
    <PublisherCacheFolders>
      <Folder Name="FolderName" />
    </PublisherCacheFolders>
  </Extension>
</Extensions>

如果两个应用程序的证书文件和发布者信息在两个项目中相同,那么在这两个应用程序之间共享的文件夹依赖于证书文件[ProjectName]\u TemporaryKey.pfx,这一点非常重要,然后,您可以在两个应用程序中访问相同的SharedFolder,并将其用于创建或使用数据库文件(如SQLite数据库文件)或需要在两个应用程序中共享的其他文件。

对通用Windows平台程序的调用是否有效?作为一个“老派”的Windows程序员,这正是我想要的位置(但我不知道你是否能够使用它)。@LDMJoe:据我所知,在UWP应用程序中没有API。然而,这正是我想要的文件夹访问方式。有没有一种方法可以通过编程更改注册表中的值来减少用户输入?
StorageFolder sharedDownloadsFolder = ApplicationData.Current.GetPublisherCacheFolder("FolderName");