我真的是Lazarus/FreePascal的新手,而且我之前没有Delphi经验。我希望能够在WIndows和Linux上获得操作系统版本信息和用户帐户类型。我看到有一个Windows系统API,但找不到任何类似的Linux。
是否有用于Lazarus/FreePascal的Linux系统API ?如果有,我如何使用它?
发布于 2011-11-14 18:15:03
在Linux上没有这样的统一点,你可以为它写一个头,然后继续使用它。此外,由于Linux的许多部分都是独立版本的,所以没有单一版本这回事。
也就是说,内核版本可以通过baseunix.fpuname()获得。发行版本很难,因为每个发行版本都以不同的方式存储他的版本信息。
第一步是确定你需要的信息,以及从哪里获取这些信息的粗略想法(例如,像libc这样的系统库,像sysctl和/proc这样的附加信息,以及桌面系统上的更高级别的系统是否允许查询这些信息,例如通过DBUS)。这些引用不会总是在Pascal中。然后在这里或在Lazarus论坛/邮件列表上提出具体的问题。
但没有像WMI这样的功能总是有效的,而且是非常不变的。Linux过去是,现在仍然是一个黑客,操作系统被分割成独立的发行版,几乎没有硬安全性。DBUS和HAL正朝着这个方向发展,但versionitis和向新库的过渡使这条路线变得不那么普遍。
发布于 2012-02-03 16:01:04
我希望能够获得操作系统版本信息
这到底是什么意思?您可以根据需要使用"uname -a“(从TProcess调用)的输出。也有/etc/redhat-release等文件,但它们可能因分发而不同。
Windows和Linux上的
和用户帐户类型。
在Unix中,您可能希望看到用户所在的组。(有多种方法可以做到这一点)。
我看到有一个Windows system API,但是找不到任何类似的东西。
Linux倾向于遵循“一切都是文件”的方法,所以在某个地方通常会有一个文件(或伪文件),您可以用所需的信息来读取这些文件。一般来说,Unix比Windows更灵活。例如,在Windows中,可能有一个API调用来获取处理器数量或速度(以Mhz为单位)。在Linux中,您可以查看/dev/cpuinfo并将该信息解析为文本文件。
Unix有各种各样的版本,甚至在Linux中也有各种各样的发行版。当然,您可以通过暂时仅支持某些发行版来缩小您想要做的事情的范围。
https://stackoverflow.com/questions/8105828
复制相似问题