Ruby Windows应用程序数据目录
这不完全是一个编程问题,但已经足够接近了,因此: 在Mac OS中,我将把我的应用程序的用户特定文件放在Ruby Windows应用程序数据目录,ruby,windows,settings,Ruby,Windows,Settings,这不完全是一个编程问题,但已经足够接近了,因此: 在Mac OS中,我将把我的应用程序的用户特定文件放在~/Library/Application Data/{MyApp}/中,在*nix中,我将它们放在~/.{MyApp}/中-我应该把它们放在Windows的哪里 我将使用Ruby的文件。展开\u path以访问此目录,因此,如果有一个与windows相当的~,那么就可以了 (如果Windows XP、Vista和7的答案不一样,我们将不胜感激)我不确定Ruby句柄如何在Windows上扩展路
~/Library/Application Data/{MyApp}/
中,在*nix中,我将它们放在~/.{MyApp}/
中-我应该把它们放在Windows的哪里
我将使用Ruby的文件。展开\u path
以访问此目录,因此,如果有一个与windows相当的~
,那么就可以了
(如果Windows XP、Vista和7的答案不一样,我们将不胜感激)我不确定Ruby句柄如何在Windows上扩展路径。Windows有这样的功能,比如,和。expand_path使用其中一个似乎是显而易见的,但我不知道是否确实如此。在Windows上执行此操作的方法是使用
ApplicationData
环境变量。如果您使用的是C#,您可以使用System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
获取它映射到的文件夹,用谷歌搜索Ruby等价物它是ENV['APPDATA']
。在英语窗口中,它映射到:
C:\Users\%username%\AppData\Roaming\
(在Vista和Windows 7上)
C:\Documents and Settings\%username%\Application Data\
(在XP上)
它可能会映射到其他语言中的不同文件夹,但只要您从环境变量中获取目录,而不是硬编码,那么它就不会有什么区别。如果您在其中为应用程序创建文件夹并将数据存储在其中,Vista和7将允许对其进行读写访问,而无需UAC提示。对于Vista、Windows 7和Windows XP
char appdir[MAX_PATH];
size_t requiredSize;
errno_t err= getenv_s( &requiredSize, appdir, MAX_PATH, "appdata" );
似乎比使用不推荐使用的API或不适用于Windows XP的API更简单。请不要硬编码miket2e列出的路径-而是使用Environment.SpecialFolder.ApplicationData(用于.net应用程序)或ShGetFolderPath(NULL,CSIDL\u APPDATA,NULL,…)作为本机Windows应用程序。在Ruby中?目前,我必须硬编码~/AppData/MyApp,因为我知道无法在Ruby中访问应用程序数据文件夹!一个错误,但是SHGetSpecialFolderPath被弃用,取而代之的是ShGetFolderPath()。@Larry:好的,我应该提到这一点。谢谢你添加它。