windows:
GetUserName(LPWSTR lpBuffer, LPDWORD nSize)
lpBuffer是一个数组的地址,用来存贮得到的用户名,nsize是个指针,指向此存贮此数组大小的单元,就是数组能存贮的字符数量
GetVersionExW(LPOSVERSIONINFOW)
参数LPOSVERSIONINFO是一个指向OSVERSIONINFO类型变量的指针,
具体判断代码如下
定义 OSVERSIONINFO osvi
然后调用函数取得版本号,判断如下
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32_NT:
if (osvi.dwMajorVersion == 5&&osvi.dwMinorVersion == 0)
{
strOSVersion = TEXT("Windows 2000")
}
else if (osvi.dwMajorVersion == 5&&osvi.dwMinorVersion == 1)
{
strOSVersion = TEXT("Windows XP")
}
else if(osvi.dwMajorVersion == 6&&osvi.dwMinorVersion == 0)
{
strOSVersion = TEXT("Windows Vista")
}
else if (osvi.dwMajorVersion == 4&&osvi.dwMinorVersion == 0)
{
strOSVersion = TEXT("Windows NT")
}
break
case VER_PLATFORM_WIN32_WINDOWS:
if (osvi.dwMajorVersion == 4&&osvi.dwMinorVersion == 10)
{
strOSVersion = TEXT("Windows 98")
}
else if (osvi.dwMajorVersion == 4&&osvi.dwMinorVersion == 90)
{
strOSVersion = TEXT("Windows ME")
}
else
{
strOSVersion = TEXT("Windows 95")
}
break
default:
break
}
c语言本身是不提供的。
在windows下使用系统命令或windows.h
//列子
#include "stdio.h"#include "conio.h"
main()
{
int i,j
char ip[20]
char temp[100]
char ch='\0'
FILE *fp
system("ipconfig >d:\\myip.txt")
if ((fp=fopen("d:\\myip.txt","r"))==NULL)
{
printf("the file can not open:\nPress any key to exit:")
getch()
exit(1)
}
for (i=0i<7i++)
{fgets(temp,80,fp) /*跳过一些行*/
/*printf("%s\n",temp) */}
fgets(temp,80,fp)
i=0j=0
while (temp[i++]!=':')
while (temp[i]!='\n')
ip[j++]=temp[i++]
ip[j]=0
printf("IP=%s\n",ip)
fclose(fp)
system("del d:\\myip.txt")
getch()
} 在Linux下 #include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <arpa/inet.h>
#include <errno.h>
#define ETH_NAME "eth0"
int main()
{
int sock
struct sockaddr_in sin
struct ifreq ifr
sock = socket(AF_INET, SOCK_DGRAM, 0)
if (sock == -1)
{
perror("socket")
return -1
}
strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ)
ifr.ifr_name[IFNAMSIZ - 1] = 0
if (ioctl(sock, SIOCGIFADDR, &ifr) < 0)
{
perror("ioctl")
return -1
}
memcpy(&sin, &ifr.ifr_addr, sizeof(sin))
fprintf(stdout, "eth0: %s\n", inet_ntoa(sin.sin_addr))
return 0
}