c++ - 获取计算机名和登录用户名

标签 c++ linux windows

我正在开发一个应用程序。其中一种方法需要捕获计算机名和登录机器的用户,然后将两者显示给用户。我需要它在 Windows 和 Linux 上运行。最好的方法是什么?

最佳答案

Windows

你可以尝试使用GetComputerNameGetUserName,这里是一个例子:

#define INFO_BUFFER_SIZE 32767
TCHAR  infoBuf[INFO_BUFFER_SIZE];
DWORD  bufCharCount = INFO_BUFFER_SIZE;

// Get and display the name of the computer.
if( !GetComputerName( infoBuf, &bufCharCount ) )
  printError( TEXT("GetComputerName") ); 
_tprintf( TEXT("\nComputer name:      %s"), infoBuf ); 

// Get and display the user name.
if( !GetUserName( infoBuf, &bufCharCount ) )
  printError( TEXT("GetUserName") ); 
_tprintf( TEXT("\nUser name:          %s"), infoBuf );

见:GetComputerNameGetUserName

Linux

使用gethostname获取计算机名(见gethostname),使用getlogin_r获取登录用户名。您可以在man page of getlogin_r查看更多信息. 简单用法如下:

#include <unistd.h>
#include <limits.h>

char hostname[HOST_NAME_MAX];
char username[LOGIN_NAME_MAX];
gethostname(hostname, HOST_NAME_MAX);
getlogin_r(username, LOGIN_NAME_MAX);

关于c++ - 获取计算机名和登录用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27914311/

相关文章:

c++ - 通过迭代器更改对象

c++ - 我怎样才能拥有一个具有不同参数类型的对象,同时它也在一个 vector 中?

c++ - 重载数组下标 [] 运算符慢

mysql - RedHat Linux/MySql 服务器密码问题

linux - 如何在 Linux 上取消关机?

linux - 如何使用find和for循环遍历每个文件

c++ - 如何在调用 SelectItem 函数时强制 CTreeCtrl 不滚动到项目?

c++ - 在不调用 read() 的情况下确定管道的大小

java - 如何在 Windows 上的 java 应用程序中设置/更新 PATH 变量?

Python检测USB驱动器然后分配驱动器号?