Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Windows应用程序数据目录_Ruby_Windows_Settings - Fatal编程技术网

Ruby Windows应用程序数据目录

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上扩展路

这不完全是一个编程问题,但已经足够接近了,因此:

在Mac OS中,我将把我的应用程序的用户特定文件放在
~/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:好的,我应该提到这一点。谢谢你添加它。