获取计算机以及本机信息API

获取计算机名:

BOOL GetComputerName(
  LPTSTR lpBuffer,  // computer name
  LPDWORD lpnSize   // size of name buffer
);
lpBuffer:缓冲区
lpnSize:缓冲区大小输入,输出参数
说明Windows系统规定计算机名称最多15个字节,应此buffer长度可以为MAX_COMPUTERNAME_LENGTH + 1,这是一个宏
#define MAX_COMPUTERNAME_LENGTH 15。GetLastError()可获取失败原因,
调用失败返回0,成功返回非零。可以通过查看lpnSize的大小知道计算机名称长度。还有一种调用方法是传入lpBuffer为
NULL,则返回实际size,size已经包括'\0'.最后在重新分配空间,调用此函数。

在GetComputerName中尽力支持可选的计算机名称的更改已添加到gethostname。GetComputerName检查环境变量。如果存
在该变量,则GetComputerName返回其值而不是真实的计算机名称。
进行更改以保持断开群集中的应用程序。
The change that was made in GetComputerName to support alternate computer names has been added to gethostname.
举例:
1:
WCHAR szComputerName[MAX_COMPUTERNAME_LENGTH + 1] = {0};
DWORD dwNameSize = MAX_COMPUTERNAME_LENGTH + 1;
GetComputerName(szComputerName, &dwNameSize);
2:
wstring getCompputerName()
{
DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
if (!GetComputerName(NULL, &dwSize))
{
PWCHAR pName = new WCHAR[dwSize];
BOOL bRet = GetComputerName(pName, dwSize);
if (!bRet)
{
delete []pName;
return L"";
}
wstring strTempW = pName;
delete []pName;
return strTempW;
}
}

获取当前用户名:
BOOL GetUserName( LPTSTR lpBuffer, // name buffer LPDWORD nSize // size of name buffer );
参数说明:
lpBuffer:缓冲区
nSize:输入输出参数,
nSize应该足够大,不然会返回失败,调用GetLastError(),可查看错误原因为:“传递给系统调用的数据区域太小。”
成功时nSize返回写入缓冲区的字节大小,包括'\0'。失败时nSize返回需要的缓冲区大小。
调用方法同上,可举一例:
WCHAR szUserName[MAX_PATH] = { 0 };
DWORD dwSize = MAX_PATH;
GetUserName(szUserName, &dwSize);
更准确的获取当前用户名可以枚举exporer进程,再进一步获取当前用户名。

获取主机名称:
int gethostname( char FAR *name, int namelen );Gethostname函数返回在网络名称资源而不是群集名称的节点名称。
The gethostname function returns the node name instead of the cluster name in the network name resource
说明:如果直接调用会返回失败,查看GetLastError()代码0x276d,发现错误信息为“应用程序没有调用 WSAStartup,
或者 WSAStartup 失败。”。所以应当先调用WSAStartup()函数,要调用此函数,必须#include <WinSock2.h>,自然也就
的引入 #pragma comment (lib, "ws2_32.lib"),这样在进一步调用gethostname就不会出错了。最后调用完成后别忘了释放资源:WSACleanup()
例如:
WSADATA wsaData;
int nErr = WSAStartup(MAKEWORD(2,2), &wsaData);//调用成功返回0,失败返回非0
if(nErr)
{
nErr = GetLastError();
return ;
}
char szhostName[MAX_PATH] = { 0 };
int nRet = gethostname(szhostName, MAX_PATH);
//int nErr = GetLastError();

转载于:https://www.cnblogs.com/priarieNew/p/9754075.html

Win10 VS2013 ************************************************ * BOOL GetDiskSpaceInfo(LPCSTR pszDrive * 功能 根据输入的驱动器,获取磁盘总容量 * 空闲空间、簇数量等磁盘信息 * 参数 驱动器根路径,比如“D:\”。 ************************************************ * void GetTime() * 功能 获取并显示本地与系统时间 ************************************************ * void GetLang() * 功能 获取并显示系统的默认语言 ************************************************ * void ShowVersionInfo() * 功能 获取并显示系统版本信息 ************************************************ * void ShowSystemInfo() * 功能 获取并显示硬件相关信息 ************************************************ *void GetFolders() * 功能 获取系统目录等信息 ************************************************ *void WINAPI EnumProcess1() * 功能 调用EnumProcess遍历进程 * 并调用ListProcessModules1函数和 * ListProcessThreads函数列举模块 * 和线程 ************************************************ * VOID ListProcessModules1( DWORD dwPID ) * 功能 调用EnumProcessModules函数 * 列举和显示进程加载的模块 * * 参数 DWORD dwPID 进程PID ************************************************ * VOID ListProcessThreads( DWORD dwPID ) * 功能 调用Thread32First和Thread32Next * 显示一个进程的线程 * * 参数 DWORD dwPID 进程PID ************************************************ * VOID PrintError( LPTSTR msg ) * 功能 打印出错信息 * * 参数 LPTSTR msg ************************************************ * void GetDriveInfo( LPCTSTR lpRootPath) * 功能 返 回 指 定 驱 动 器 的 类 型。 * * 参数 lpRootPathName ************************************************ * void GetSystemMetric(int nIndex) * 功能 返 回 显 示 器 分 辨 率。 * * 参数 ************************************************ * void GetKeyboardInfo() * 功能 返回键盘类型。 * * 参数 *************************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值