Haskell-如何获取系统OS目录?

Haskell-如何获取系统OS目录?,haskell,Haskell,目录库包含许多用于获取某些保留目录的帮助器方法。但是,在最新版本(1.2.3.1)中,似乎没有能够获取系统OS目录的函数;e、 例如,“C:\Windows”。我希望这是一个类似于getSystemDirectory的函数,但我看不到任何等效函数。至少在Windows上,用户可以将操作系统安装到非标准位置,因此,对其位置进行任何假设都是不安全的 是否还有其他库公开这样的函数?Win32库包含此功能 import System.Win32.Info -- Calls Win32's GetWin

目录
库包含许多用于获取某些保留目录的帮助器方法。但是,在最新版本(1.2.3.1)中,似乎没有能够获取系统OS目录的函数;e、 例如,“C:\Windows”。我希望这是一个类似于
getSystemDirectory
的函数,但我看不到任何等效函数。至少在Windows上,用户可以将操作系统安装到非标准位置,因此,对其位置进行任何假设都是不安全的


是否还有其他库公开这样的函数?

Win32
库包含此功能

import System.Win32.Info

-- Calls Win32's GetWindowsDirectory() function in kernel32.dll
-- Corresponds to: C:\Windows
getWindowsDirectory :: IO String

-- Calls Win32's GetSystemDirectory() function in kernel32.dll
-- Corresponds to: C:\Windows\system32   
getSystemDirectory :: IO String

Win32
库包含此功能

import System.Win32.Info

-- Calls Win32's GetWindowsDirectory() function in kernel32.dll
-- Corresponds to: C:\Windows
getWindowsDirectory :: IO String

-- Calls Win32's GetSystemDirectory() function in kernel32.dll
-- Corresponds to: C:\Windows\system32   
getSystemDirectory :: IO String

查找特定于操作系统的操作的正确方法是告诉hoogle您正在谈论的操作系统。希望在寻找特定于操作系统的东西时,这是显而易见的。在这种情况下,您可以直接获得成功。

找到操作系统特定操作的正确方法是告诉hoogle您正在谈论的操作系统。希望在寻找特定于操作系统的东西时,这是显而易见的。在这种情况下,您可以直接获得成功。

这对于非Windows系统意味着什么?我使用Linux,如果你问我的“系统操作系统目录”在哪里,我不知道怎么回答。(再说一遍,我几乎不是专家!)是的,我也不完全确定。在Linux中,我从未试图脱离用户空间。(也许这相当于
root
的主目录?[Edit:]实际上,我认为
/boot
将是等效的。基本上,它将是内核所在的位置。由于“OS目录”是一个特定于Windows的概念,请查找专用于Windows编程的库。你不能用“OS目录”做任何有用的事情,而“OS目录”对操作系统不是很具体。在Windows中,我希望您可以通过环境变量(可移植概念)或注册表项(特定于Windows的概念)获取信息。Gilles,关于库有什么建议吗?这就是我一直在寻找的东西,但在上面什么也找不到。我特别尝试避免输入它,因为它是一个可以自动执行某些类型文件更改的工具。我宁愿用一种更正确的方式(支持库)来做,也不愿把它删掉。最坏的情况是,我想我可以使用一个库来封装Kelnel.3@ StutMunt:而不是避免基于OS的某些目录,我会考虑让用户指定他们想要监视哪些目录,并且远离其他地方。这对非Windows系统意味着什么?我使用Linux,如果你问我的“系统操作系统目录”在哪里,我不知道怎么回答。(再说一遍,我几乎不是专家!)是的,我也不完全确定。在Linux中,我从未试图脱离用户空间。(也许这相当于
root
的主目录?[Edit:]实际上,我认为
/boot
将是等效的。基本上,它将是内核所在的位置。由于“OS目录”是一个特定于Windows的概念,请查找专用于Windows编程的库。你不能用“OS目录”做任何有用的事情,而“OS目录”对操作系统不是很具体。在Windows中,我希望您可以通过环境变量(可移植概念)或注册表项(特定于Windows的概念)获取信息。Gilles,关于库有什么建议吗?这就是我一直在寻找的东西,但在上面什么也找不到。我特别尝试避免输入它,因为它是一个可以自动执行某些类型文件更改的工具。我宁愿用一种更正确的方式(支持库)来做,也不愿把它删掉。最坏的情况是,我想我可以使用一个库来封装Kalnel32. @ StutMunt:而不是避免基于OS的某些目录,我会考虑让用户指定他们希望监视哪些工具的目录,并且远离其他地方。令人讨厌的是,在Hoogle或堆栈中找不到这些目录。(在我发布这个问题的时候)。hoogle默认搜索一个相当小的包集。以前有(是吗?)Google中的操作系统特定标志。是的,我知道这一点,但我确实认为Stackage更为一致。最终,我通过在MSDN中查找Win32方法并通过Google搜索类似名称找到了所需的内容。(当然,尝试“Windows目录”对结果帮助不大,但“Win32”更有效。)Hoogle缺少的密钥是知道首先查找Win32库。令人恼火的是,在Hoogle或Stackage(我发布此问题时)中没有搜索这些密钥。Hoogle默认搜索一组相当小的包。以前有(是吗?)Google中的操作系统特定标志。是的,我知道这一点,但我确实认为Stackage更为一致。最终,我通过在MSDN中查找Win32方法并通过Google搜索类似名称找到了所需的内容。(当然,尝试“Windows目录”对结果帮助不大,但“Win32”更有效。)Hoogle丢失的密钥是知道首先查找Win32库。