gpt4 book ai didi

clickonce - 写入/读取数据目录是否需要管理员权限?

转载 作者:行者123 更新时间:2023-12-04 06:57:33 27 4
gpt4 key购买 nike

背景 - 我正在考虑使用 clickonce 通过 clickonce(通过网站)部署 WinForms 应用程序。相对简单的应用程序的要素是:
- 它是一个可执行文件和一个数据库文件(sqlite)
- 数据库(sqlite)有时需要由应用程序更新(例如添加表,添加列)
- 数据库数据(这只是 sqlite 的一个文件)需要在升级过程中保持不变

假设 - 我在这里假设允许在 clickone 下进行上述操作的最佳方法是:

  • 使用数据目录作为 sqlite 数据库文件的位置
  • 将智能写入 MainForm 加载方法以:
  • 检查是否需要以编程方式(通过ApplicationDeployment.CurrentDeployment.IsFirstRun)在数据目录(DD)中创建数据库文件,或者如果不需要从PRE区域复制现有的数据库文件(clickonce应该复制它) 到主 DD 区
  • 检查DD中数据库文件的版本然后更新它

  • 问题 - ClickOnce 是否有任何要求具有特殊访问权限(管理员或提升的权限)来读取/写入/形成上述数据目录? 也就是说,我可以假设最基本的用户的 PC 应该能够做到这一点(家用 PC 或组织中的工作 PC)。

    谢谢

    最佳答案

    我建议(最容易做的)是将文件(我认为是 SQLLite 数据库)添加为现有资源,右键单击它,转到属性并将构建操作更改为内容,然后复制到输出目录为“如果更新则复制”。

    从这里你有 2 个选择:

    如果您在更新时永远不会更改原始 SQL 文件,那么您可以保持原样,但如果您希望时不时地进行更改,我建议如下:

            String appPath = Path.GetDirectoryName(Application.ExecutablePath);

    if (!System.IO.File.Exists(appPath + @"\Resources\SQLLite.db"))
    {
    System.IO.File.Copy(appPath + @"\Resources\SQLLiteIncluded.db", appPath + @"\Resources\SQLLite.db");
    }

    如果需要,您可以复制到当前用户的应用程序数据文件夹,如果程序对其可执行路径没有写访问权限(大多数情况下都有)

    \Resources\是我在我的项目中创建的一个文件夹(如果里面有内容的文件,它会被复制到可执行路径中)因此我将它包含在路径中。 (这是可选的)

    关于管理权限,我在我们的网络上不需要任何管理权限,但是我们通过网络驱动器而不是网站进行部署,但我认为它是相同的。

    关于clickonce - 写入/读取数据目录是否需要管理员权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2369025/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com