【问题标题】:Which is the best location to keep program configuration file in WINDOWS?在 WINDOWS 中保存程序配置文件的最佳位置是哪个?
【发布时间】:2009-07-20 07:09:11
【问题描述】:

我的程序需要将一些配置详细信息保存在 .ini 文件中。该程序还安装了 IE 和 firefox 的扩展,我也想从这些扩展中读取这些 .ini 文件。如果我将 .ini 保留在“...AppData/Roaming...”中,则处于保护模式的 IE 扩展将无法读取/写入。据我所知,只有 AppData/LocalLow 只能在保护模式下读取。如果我将所有配置详细信息移至此“...AppData/LocalLoe ...”,它会一直工作吗?这是标准的方式吗?我写的一切都是在 Vista 环境中,它可以与 XP 一起使用吗? Win7?

【问题讨论】:

    标签: windows internet-explorer windows-vista add-on


    【解决方案1】:

    查看我对这个问题的回答:How to decide where to store per-user state? Registry? AppData? Isolated Storage?

    从那里引用:

    Vista 中用户的“漫游”文件夹或 XP 中的“应用程序数据”中的文件随用户移动 - 因此任何设置和数据都应存储在那里。

    vista 中的“Local”和“LocalLow”下的文件以及 XP 中的“Local Settings”下的文件没有,因此它是放置临时文件、与特定计算机相关联的东西或可以重新计算的数据的好地方。

    在 Vista 中,作为我们都知道和喜爱的新安全功能的一部分,您可以让程序以“低完整性模式”运行(例如 IE 处于保护模式),这些程序以降低的权限运行并且不能访问用户配置文件中的文件 - “LocalLow”文件夹下的文件除外。

    因此,总而言之,存储在“LocalLow”中的文件本质上是不安全的,并且“Local”/“Local Settings”中的文件可能在某些大公司中不可用 - 所以除非您有充分的理由并且确切地知道自己是什么使用“漫游”/“应用程序数据”。

    更新:

    1. 使用配置文件漫游(大型合作环境)时,Local 和 LocalLow 的内容可能(并且将会)消失,恕不另行通知。
    2. 这些都是针对每个用户的设置,如果您的服务器在与用户不同的帐户下运行(例如,系统或网络),他们将获得这些文件夹的不同副本。

    【讨论】:

    • 感谢您的回复。我的主要应用程序是一个小型 Web 服务器,我们扩展了 IE 和 Firefox。因此,我们需要将运行 Web 服务器的端口保留在 .ini 中,并且扩展应该能够读取它,以便我们可以构建正确的 URL。如果我一直处于漫游 IE 保护模式将无法读取它,并且如果我将其保存在 LocalLow 中,我将无法找到 XPCom 界面(可编写脚本)来查找 LocalLow 文件夹路径。
    • 我对XPCom一无所知,所以我帮不了你,正如jia3ep所说,获取路径的Win32 API是SHGetKnownFoldedPath。
    【解决方案2】:

    要获取程序数据的文件夹路径,您应该使用 WinAPI:

    wchar_t path_buf[MAX_PATH];
    SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, SHGFP_TYPE_CURRENT, &path_buf[0] );
    

    在 Windows Vista 中,函数 SHGetFolderPath 被替换为 SHGetKnownFoldedPath。那个旧函数现在只是 SHGetKnownFolderPath 的包装器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2011-11-23
      相关资源
      最近更新 更多