WINDOWS 中程序配置文件最好保存在哪个位置?

发布于 2024-07-29 07:49:36 字数 286 浏览 8 评论 0 原文

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

My program requires some configuration details to be kept in a .ini file. This program also installs extensions to IE and firefox and i want to read these .ini file from these extensions also. If I kept .ini in "...AppData/Roaming..." the IE extension in protected mode won't be able to read/write. As far as I know only AppData/LocalLow can only be able to read in protected mode. If I am moving all my configuration details to this "...AppData/LocalLoe..." will it work all times? Is this the std way? everything i written is in Vista context, will it work with XP? Win7?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掩耳倾听 2024-08-05 07:49:36

请参阅我对此问题的回答:如何决定在哪里存储每个用户的状态? 注册表? 应用程序数据? 独立存储?

引用此处:

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

Vista 中“Local”和“LocalLow”下的文件以及 XP 中“Local Settings”下的文件则不然,因此它是存放临时文件、与特定计算机相关的内容或可以重新计算的数据的好地方。

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

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

更新:

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

See my answer to this question: How to decide where to store per-user state? Registry? AppData? Isolated Storage?

to quote from there:

Files in the User's "Roaming" folder in Vista or "Application Data" in XP move around with the user - so any settings and data should be stored there.

Files under "Local" and "LocalLow" in vista and "Local Settings" in XP do not, so it's a good place for temp files, things that are tied to the specific computer or data that can be recalculated.

In Vista, as part of the new security features we all know and love, you can have programs running in "low integrity mode" (for example IE in protected mode), those programs are running with reduced privileges and can't access files in the user's profile - except for files under the "LocalLow" folder.

So, in conclusion, files stored in "LocalLow" are inherently insecure and files in "Local"/"Local Settings" are likely to be unavailable in some large companies - so unless you have good reason and know exactly what you are doing go with "Roaming"/"Application Data".

UPDATE:

  1. When profile roaming is used (big cooperate environments) the content of Local and LocalLow can (and will) disappear without notice.
  2. Those are all per-user settings, if your server runs under a diffrent account than the user (for example, system or network) they will get diffrent copies of those folders.
丿*梦醉红颜 2024-08-05 07:49:36

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

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

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

To get folder path for program data you should use WinAPI:

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

In Windows Vista function SHGetFolderPath was replaced with SHGetKnownFoldedPath. That older function is now simply a wrapper for SHGetKnownFolderPath.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文