简单API练手:(1)复制自身程序到windows目录和系统目录下;(2)获得系统的相关信息。
2015-04-07 13:34
519 查看
1.复制自身程序到windows目录和系统目录下:
相关API介绍:
1>获得自身程序所在路径的API定义:
三个参数,分别如下:
hModule:该参数在获得自身程序时使用为NULL。
lpFilename:该参数指定一个字符型的缓冲区,用于保存程序自身所在的路径。
nSize:该参数指定缓冲区的大小。
2>获得Windows目录的API的定义:
两个参数,分别如下:
lpBuffer:指定一个字符型的缓冲区,用于保存Windows目录的路径。
uSize:指定缓冲区的大小。
3>获得系统目录的API函数的定义:
两个参数,分别如下:
lpBuffer:指定一个字符型的缓冲区,用于保存系统目录的路径。
uSize:指定缓冲区的大小。
4>拷贝文件的API函数的定义:
三个参数,分别如下:
lpExistingFileName:指向一个已存在文件的路径,即原文件路径。
lpNewFileName:指向一个新的文件的位置,即欲拷贝到的文件的目的路径。
bFailIfExists:一个布尔型参数,如果参数为TRUE,若目的文件已存在则返回,复制失败;如果参数为FALSE,,若目的文件已存在则强行覆盖原有的文件。
2.获得系统的相关信息:
相关API介绍如下:
1>获取操作系统版本:
一个参数,如下:
lpVersionInfo:指向一个OSVERSIONINFO结构的指针。
dwPlatformId的取值有3个,而现在主要使用一个,即VER_PLATFORM_WIN32_NT。
2>获取计算机名称:
两个参数,分别如下:
lpBuffer:保存计算机名称缓冲区。
lpnSize:保存缓冲区的长度,该参数是一个输入/输出参数。
3>获取当前用户名称:
两个参数,分别如下:
lpBuffer:保存当前用户名称的缓冲区。
nSize:保存缓冲区的长度,该参数是一个输入/输出参数。
#include <windows.h> #include <stdio.h> #include <string.h> void CopySelf(); int main(){ CopySelf(); return 0; } void CopySelf(){ char szSelfName[MAX_PATH]={0}; char szWindowsPath[MAX_PATH]={0}; char szSystemPath[MAX_PATH]={0}; GetModuleFileName(NULL,szSelfName,MAX_PATH); GetWindowsDirectory(szWindowsPath,MAX_PATH); GetSystemDirectory(szSystemPath,MAX_PATH); strcat(szWindowsPath,"\\backdoor.exe"); strcat(szSystemPath,"\\backdoor.exe"); CopyFile(szSelfName,szWindowsPath,FALSE); CopyFile(szSelfName,szSystemPath,FALSE); }
相关API介绍:
1>获得自身程序所在路径的API定义:
DWORD GetModuleFileName{ HMODULE hModule, //handle to module LPTSTR lpFilename, //file name of module DWORD nSize //size of buffer };
三个参数,分别如下:
hModule:该参数在获得自身程序时使用为NULL。
lpFilename:该参数指定一个字符型的缓冲区,用于保存程序自身所在的路径。
nSize:该参数指定缓冲区的大小。
2>获得Windows目录的API的定义:
UINT GetWindowsDirectory{ LPTSTR lpBuffer, //buffer for Windows directory UINT uSize //size of directory buffer };
两个参数,分别如下:
lpBuffer:指定一个字符型的缓冲区,用于保存Windows目录的路径。
uSize:指定缓冲区的大小。
3>获得系统目录的API函数的定义:
UINT GetSystemDirectory{ LPTSTR lpBuffer, //buffer for system directory UINT uSize //size of directory buffer };
两个参数,分别如下:
lpBuffer:指定一个字符型的缓冲区,用于保存系统目录的路径。
uSize:指定缓冲区的大小。
4>拷贝文件的API函数的定义:
BOOL CopyFile{ LPCTSTR lpExistingFileName, //name of an existing file LPCTSTR lpNewFileName, //name of new file BOOL bFailIfExists //operation if file exists };
三个参数,分别如下:
lpExistingFileName:指向一个已存在文件的路径,即原文件路径。
lpNewFileName:指向一个新的文件的位置,即欲拷贝到的文件的目的路径。
bFailIfExists:一个布尔型参数,如果参数为TRUE,若目的文件已存在则返回,复制失败;如果参数为FALSE,,若目的文件已存在则强行覆盖原有的文件。
2.获得系统的相关信息:
#include <windows.h> #include <stdio.h> void GetSysInfo(); int main(){ GetSysInfo(); return 0; } void GetSysInfo(){ char szComputerName[MAXBYTE]={0}; char szUserName[MAXBYTE]={0}; unsigned long nSize=MAXBYTE; OSVERSIONINFO OsVer; OsVer.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(&OsVer); if(OsVer.dwPlatformId==VER_PLATFORM_WIN32_NT){ if(OsVer.dwMajorVersion==5&&OsVer.dwMinorVersion==1) printf("Windows XP %s \r\n",OsVer.szCSDVersion); else if(OsVer.dwMajorVersion==5&&OsVer.dwMinorVersion==0) printf("Windows 2K \r\n"); }else{ printf("Other System \r\n"); } GetComputerName(szComputerName,&nSize); printf("Computer Name is %s \r\n",szComputerName); nSize=MAXBYTE; GetUserName(szUserName,&nSize); printf("User Name is %s \r\n",szUserName); }
相关API介绍如下:
1>获取操作系统版本:
BOOL GetVersionEx{ LPOSVERSIONINFO lpVersionInfo //version information };
一个参数,如下:
lpVersionInfo:指向一个OSVERSIONINFO结构的指针。
typedef struct _OSVERSIONINFO{ DWORD dwOSVersionInfoSize; //结构体大小 DWORD dwMajorVersion; //主版本号 DWORD dwMinorVersion; //次版本号 DWORD dwBuildNumber; DWORD dwPlatformId; //平台ID TCHAR szCSDVersion[128]; //补丁包 }OSVERSIONINFO;
dwPlatformId的取值有3个,而现在主要使用一个,即VER_PLATFORM_WIN32_NT。
2>获取计算机名称:
BOOL GetComputerName{ LPTSTR lpBuffer, //computer name LPDWORD lpnSize //size of name buffer };
两个参数,分别如下:
lpBuffer:保存计算机名称缓冲区。
lpnSize:保存缓冲区的长度,该参数是一个输入/输出参数。
3>获取当前用户名称:
BOOL GetUserName{ LPTSTR lpBuffer, //name buffer LPDWORD nSize //size of name buffer };
两个参数,分别如下:
lpBuffer:保存当前用户名称的缓冲区。
nSize:保存缓冲区的长度,该参数是一个输入/输出参数。
相关文章推荐
- 复制自身程序到windows目录和系统目录,获取系统的相关信息
- 复制自身程序到Windows目录和系统目录下
- 复制自身程序到windows目录和系统目录下
- 在.Net Framework中获得Windows目录、机器名、操作系统版本信息等系统环境信息
- 在.Net Framework中获得Windows目录、机器名、操作系统版本信息等系统环境信息
- .Net Framework中获得Windows目录、机器名、操作系统版本信息等系统环境信息
- 复制自身程序到windows目录和system32目录下
- windows api 之复制文件到指定目录和获得系统信息
- 在.Net Framework中获得Windows目录、机器名、操作系统版本信息等系统环境信息
- C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- VC学习资料收集(22):如何获得Windows各类系统目录
- 使用Android系统隐藏api 读取*.apk 程序安装包信息[转]
- 基于linux socket 简单学生信息管理系统client程序
- sharepoint 2007 使用open with windows explorer的方式打开sharepoint 目录,然后批量复制文件,会导致被复制的文件信息被修改成当前用户和当前时间
- 基于linux socket 简单学生信息管理系统server程序
- windows 系统信息API
- 用于返回windows系统信息的一些API
- 稳扎稳打Silverlight(67) - 5.0被信任的应用程序之访问本地文件系统, 支持多窗口, 被信任的程序在浏览器中运行, Call Windows API
- 获得Windows系统的IP网络信息的方法
- 获取Windows系统信息的Delphi程序