欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611
新龙年,大家新年快乐,更加牛...
故事背景嘛,是家里有台电脑,一些小屁孩都来家里玩,由于电脑是归老爸用的,看着一些小屁股用他的宝贝电脑,心痛,又不好说,更看不得别人用他的电脑玩游戏。
于是,身为程序员的我,发挥咱自力更生,自己动手的精神。
开发了这个小东西。
用到的有
ini文件操作
注册表操作
进程操作
一些UI设计(通知栏图标.....)
软件实现功能有
本地配置信息,在ini文件
读写注册表,注册开机启动
对配置添加的进程可以自动进行终止操作
操作权限,密码保护
软件截图
程序比较粗糙
新年练手了。
ini文件操作:部分代码
读取ini键值并修改
for(int i=0;i<10;i++)
{
CString indexStr,valueTmp2;
indexStr.Format("pressName%d",i);
GetPrivateProfileString("killInfo",indexStr,"默认",valueTmp2.GetBuffer(MAX_PATH),MAX_PATH,"c:\\killData.ini");
if(valueTmp2 == valueTmp)
{
::WritePrivateProfileString("killInfo",indexStr,"","c:\\killData.ini");
loadIniFile();
return true;
}
}
注册表信息读写
HKEY hKEY;
HKEY hKeyRoot = HKEY_LOCAL_MACHINE;
long ret0=::RegOpenKeyEx(hKeyRoot,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hKEY);
if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行
{
AfxMessageBox("错误:无法打开有关的注册表信息!");
RegCloseKey(hKEY);
return false;
}
unsigned char chbuf[100];
DWORD keyType = REG_SZ; //定义数据类型
DWORD DataLen = 100; //定义数据长度
CString KeyName = _T("PressKiller"); //要查询的键名称
long ret1 = ::RegQueryValueEx(hKEY,KeyName,NULL,&keyType,chbuf,&DataLen);
CString tmpValue;
tmpValue.Format("%s",chbuf);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox("没有该注册表信息,将创建此键值,请允许操作!");
//RegCloseKey(hKEY);
//return false;
}
if (tmpValue != exeFilePath)
{
CString tmp = exeFilePath;
LPCTSTR strValue = (LPCTSTR)tmp.GetBuffer(tmp.GetLength());
long ret = ::RegSetValueEx(hKEY,"PressKiller",0,REG_SZ,(const BYTE *)strValue,strlen(tmp) + 1);
if(ret !=ERROR_SUCCESS)
{
AfxMessageBox("错误:无法查询有关的注册表信息");
RegCloseKey(hKEY);
return false;
}
}
RegCloseKey(hKEY);
进程操作代码:
HANDLE han= ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //取进程快照
PROCESSENTRY32 lpp;
lpp.dwSize =sizeof(PROCESSENTRY32);
BOOL bo;
bo=::Process32First(han,&lpp); //从快照里取第一个进程信息
TCHAR *str1,*str2;
while(bo)
{
str1=lpp.szExeFile ;
str2=_strlwr(str1);
CString pressNameTmp = str2;
//-----判断是否aa.exe
pressNameTmp.MakeLower();
if(pressNameTmp.Find(pressName) != -1)
{
HANDLE hantmp=::OpenProcess(PROCESS_TERMINATE,TRUE,lpp.th32ProcessID); //取进程实例
::TerminateProcess(hantmp,4); //关闭
}
bo=::Process32Next(han,&lpp); //取下一个进程信息
}
::CloseHandle(han); //关闭快照
代码也比较粗糙
主要是让自己又接触到了以前比较少接触的代码。
1天完成了
1天修改BUG,完善。
然后就跑在家里的机器上面了。。。
以后有时间,维护一下。
程序下载地址请看评论地址。。。。。
转载请注明来源
muxin_hp的博客
欢迎各位一起交流
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611