获取计算机以及本机信息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();
获取计算机以及本机信息API的更多相关文章
- AD命令获取计算机、用户相关信息
1. 获取AD用户相关信息(用户名.创建日期.最后修改密码日期.最后登录日期) Get AD users, Name/Created Date/Last change passwd Date/Last ...
- JAVA获取计算机的IP、名称、操作系统等信息
[java] view plaincopyprint? import java.io.BufferedReader; import java.io.InputStream; import java.i ...
- JAVA获取计算机CPU、硬盘、主板、网络等信息
通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...
- html5获取地理位置信息API
html5获取地理位置信息API 在HTML5中,可以看下如何使用Geolocation API来获得用户的地理位置信息,如果该浏览器支持的话,且设备具有定位功能,就能够直接使用这组API来获取当前位 ...
- 利用KEGG的API获取基因对应的pathway 信息
KEGG 官网提供了API, 可以方便的访问KEGG 数据库中的内容,链接如下: http://www.kegg.jp/kegg/rest/keggapi.html 利用API可以得到某一个基因参与的 ...
- C#获取AD域中计算机和用户的信息
如果你的计算机加入了某个AD域,则可以获取该域中所有的计算机和用户的信息. 所用程序集,需要.Net Framework 4. 添加程序集引用 System.DirectoryServices.Acc ...
- C# 获取计算机cpu,硬盘,内存相关的信息
using System;using System.Management; namespace MmPS.Common.Helper{ /// <summary> /// 获取计算机相关的 ...
- C# 获取计算机的硬件信息
/// <summary> /// 获得CPU编号 /// </summary> /// <returns></returns> public stri ...
- 微信小程序把玩(三十八)获取设备信息 API
原文:微信小程序把玩(三十八)获取设备信息 API 获取设备信息这里分为四种, 主要属性: 网络信息wx.getNetWorkType, 系统信息wx.getSystemInfo, 重力感应数据wx. ...
随机推荐
- Qt Creator编译时提示找不到“ui_xxx.h”文件
解决方案: 在对应工程的*.pro文件里加上: QT+= widgets 则在编译过程中对应的“xxx.ui”文件会自动生成“ui_xxx.h”文件.
- AIO 详解
AIO(Asynchronous Input and Output) 异步IO则采用"订阅-通知"模式: 即应用程序向操作系统注册IO监听,然后继续做自己的事情. 当操作系统发生I ...
- EL fmt标签
c:formate 表达式需要传入的对象为date
- Java反射简介
Java反射简介 1.Class类 1) 在面向对象的世界里,万事万物皆对象.(java语言中,静态的成员.普通数据类型除外) 类是不是对象呢?类是(哪个类的对象呢?)谁的对象呢? 类是对象,类是ja ...
- WEB前端使用的CSS3选择器
首先说first-child与last-child,这两个选择器很容易明白,就是父元素下的第一个子元素和最后一个子元素.而nth-child和nth-last-child则是父元素下指定序号的子元素, ...
- Spring Boot 发布 jar 包转为 war 包秘籍。
Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布.使用jar包比较方便,但如果是频繁修改更新的项目,需要打补丁包,那这么大的jar包上传都是问题.所以,jar包不一定 ...
- js基础应用-打字机,震动窗口
js基础应用一,窗口震动 html+js代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- Django框架中session存储到redis中的配置
本文链接:https://blog.csdn.net/linqunbin/article/details/94786313————————————————版权声明:本文为CSDN博主「linqunbi ...
- python-包管理工具-pip
目录 Python pip pip相关命令 解决pip相关问题 Python pip回到顶部 Python最让人的喜欢的就是它有丰富的类库和各种第三方的包,而对于这些包的下载.删除等管理操作,就要用到 ...
- POJ 1696 /// 凸包
题目大意: 不能向左拐 不能重复走 就是求一个螺旋凸包 把已经是凸包内的点标记一下就行 因为凸包的性质 所有点都能走到 注意起点的选择 还有 反复求凸包的过程中边界的改变 #include <c ...