欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
VC中使用ADO调用存储过程 进程注入的代码
晴天  VC常用代码收集
[ 发布日期:20年前 (2005-04-24) ]   [ 来自:本站原创 ] [分类:C\C++相关]
根据文件句柄,获取文件名
[复制到剪贴板]


#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <string.h>
#include <psapi.h>

#define BUFSIZE 512

BOOL GetFileNameFromHandle(HANDLE hFile
{
  
BOOL bSuccess FALSE;
  
TCHAR pszFilename[MAX_PATH+1];
  
HANDLE hFileMap;

  
// Get the file size.
  
DWORD dwFileSizeHi 0;
  
DWORD dwFileSizeLo GetFileSize(hFile, &dwFileSizeHi); 

  if( 
dwFileSizeLo == && dwFileSizeHi == )
  {
     
printf("Cannot map a file with a length of zero.\n");
     return 
FALSE;
  }

  
// Create a file mapping object.
  
hFileMap CreateFileMapping(hFile
                    
NULL
                    
PAGE_READONLY,
                    
0
                    
1,
                    
NULL);

  if (
hFileMap
  {
    
// Create a file mapping to get the file name.
    
voidpMem MapViewOfFile(hFileMapFILE_MAP_READ001);

    if (
pMem
    {
      if (
GetMappedFileName (GetCurrentProcess(), 
                             
pMem
                             
pszFilename,
                             
MAX_PATH)) 
      {

        
// Translate path with device name to drive letters.
        
TCHAR szTemp[BUFSIZE];
        
szTemp[0] = '\0';

        if (
GetLogicalDriveStrings(BUFSIZE-1szTemp)) 
        {
          
TCHAR szName[MAX_PATH];
          
TCHAR szDrive[3] = TEXT(" :");
          
BOOL bFound FALSE;
          
TCHARszTemp;

          do 
          {
            
// Copy the drive letter to the template string
            
*szDrive = *p;

            
// Look up each device name
            
if (QueryDosDevice(szDriveszNameBUFSIZE))
            {
              
UINT uNameLen _tcslen(szName);

              if (
uNameLen MAX_PATH
              {
                
bFound _tcsnicmp(pszFilenameszName
                    
uNameLen) == 0;

                if (
bFound
                {
                  
// Reconstruct pszFilename using szTemp
                  // Replace device path with DOS path
                  
TCHAR szTempFile[MAX_PATH];
                  
_stprintf(szTempFile,
                            
TEXT("%s%s"),
                            
szDrive,
                            
pszFilename+uNameLen);
                  
_tcsncpy(pszFilenameszTempFileMAX_PATH);
                }
              }
            }

            
// Go to the next NULL character.
            
while (*p++);
          } while (!
bFound && *p); // end of string
        
}
      }
      
bSuccess TRUE;
      
UnmapViewOfFile(pMem);
    } 

    
CloseHandle(hFileMap);
  }
  
printf("File name is %s\n"pszFilename);
  return(
bSuccess);
}
 



开机自动运行
  其中strPath参数表示要设置为自运行的程序的绝对路径。当设置成功时返回true,否则返回false。
[复制到剪贴板]


BOOL SetAutoRun
(CString strPath)//开机自动运行
{
   
CString str;
   
HKEY hRegKey;
   
BOOL bResult;
   
str=_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
   if(
RegOpenKey(HKEY_LOCAL_MACHINEstr, &hRegKey) != ERROR_SUCCESS
       
bResult=FALSE;
   else
   {
       
_splitpath(strPath.GetBuffer(0),NULL,NULL,str.GetBufferSetLength(MAX_PATH+1),NULL);
       
strPath.ReleaseBuffer();
       
str.ReleaseBuffer();
       if(::
RegSetValueExhRegKey,
                           
str,
                           
0,
                           
REG_SZ,
                           (CONST 
BYTE *)strPath.GetBuffer(0),
                           
strPath.GetLength() ) != ERROR_SUCCESS)
          
bResult=FALSE;
       else
          
bResult=TRUE;
       
strPath.ReleaseBuffer();
   }
   return 
bResult;
}        
 



使计算机休眠
[复制到剪贴板]


void XiuMian
() 
{
 if(
MessageBox("确实要休眠吗?","关机程序",MB_YESNO|MB_DEFBUTTON2|MB_ICONQUESTION)==IDYES)
 {
  
HANDLE hToken;
  
TOKEN_PRIVILEGES tp;
  
LUID luid;
  if(::
OpenProcessToken(GetCurrentProcess(),
         
TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
         &
hToken))
  {
   ::
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
   
tp.PrivilegeCount=1;
   
tp.Privileges[0].Luid =luid;
   
tp.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED;
   ::
AdjustTokenPrivileges(hToken,false,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
  }
  ::
SetSystemPowerState(false,true); 
 }
}
 


引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/77
复制引用地址https://www.rickw.cn/trackback/77/GBK
[ 分类:C\C++相关  | 查看:1470 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5