我对Lazarus/FreePascal非常陌生,以前也没有Delphi经验。我想要获取Windows和Linux下的操作系统版本信息和用户账户类型。我发现有Windows系统API,但是没有找到类似的Linux API。
是否有适用于Lazarus/FreePascal的Linux系统API?如果有,该如何使用?
我对Lazarus/FreePascal非常陌生,以前也没有Delphi经验。我想要获取Windows和Linux下的操作系统版本信息和用户账户类型。我发现有Windows系统API,但是没有找到类似的Linux API。
是否有适用于Lazarus/FreePascal的Linux系统API?如果有,该如何使用?
在Linux上,并不存在一个统一的点,可以编写一个头文件并一直使用它。此外,由于Linux的许多部分是独立版本的,所以也没有单个版本的概念。
话虽如此,内核版本可以通过baseunix.fpuname()获得。发行版版本很难确定,因为每个发行版都以不同的方式存储其版本信息。
第一步是确定您需要的信息,以及大致了解获取该信息的位置(例如,系统库,如libc,附加信息,如sysctl和/proc,以及如果桌面系统上的高级系统允许查询此类信息,例如通过DBUS)。这些参考资料并不总是用Pascal编写的。然后在这里或Lazarus论坛/邮件列表上提出具体问题。
但是,并不存在像WMI那样始终有效且相当不变的功能。 Linux仍然是一个黑客和微调器操作系统,分散成几个有限的发行版,缺乏坚实的安全性。 DBUS和HAL正在朝着这个方向发展,但版本问题和转向新库使得这条路不太普遍。
我想能够获取操作系统版本信息
这是什么意思?您可以根据需要使用“uname -a”的输出(从TProcess调用)。还有像/etc/redhat-release等文件,但它们可能因发行版而异。
以及Windows和Linux上的用户帐户类型。
在Unix中,您可能想要查看用户所在的组。(有各种方法可以做到这一点)。
我看到有一个Windows系统API,但找不到类似的东西适用于Linux。
Linux倾向于遵循“一切皆为文件”的方法,因此通常会有一个文件(或伪文件),您可以读取其中包含您想要的信息。总的来说,Unix比Windows更灵活。例如,在Windows中,可能有一个API调用来获取处理器数量或以Mhz为单位的速度。在Linux中,您可以查看/dev/cpuinfo并将该信息解析为文本文件。
Unix 有各种不同的版本,在 Linux 中,也有各种不同的发行版。当然,您可以通过仅支持目前特定的某些发行版来限制您想要做的范围。
libc
。我不知道FPC库是否为您包装了它。我希望并期望他们这样做。 - David Heffernan