QQ登录

只需一步,快速开始

375上位机VC MFC通过注册表获取全部开机启动软件

[ 复制链接 ]

375上位机VC MFC通过注册表获取全部开机启动软件

375上位机VC MFC通过注册表获取全部开机启动软件

通过注册表获取全部开机启动软件
功能展示
系统启动都会有部分软件一同启动,360等一些软件就有开机启动软件管理,我们当前例程也通过注册表实现系统全部开机的获取,效果如图,点击<读取开机软件>例程会读取注册存放开机软件位置的子项,将结果显示在列表框中,另一个按钮是将软件设置为开机启动,但在WIN7系统中还得获得权限,在这不做演示;

要点提示
软件随同系统一起启动的方法很多,最常见的就是通过读取注册表 “Run”子键值来实现,这也是目前最常见的自启动程序用于加载的地方。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run〕下。当前例程是通过读取第二个位置的RUN子键实现;
注册表子键下全部值的遍历可以用函数RegEnumValue()实现;函数原型为
LONG RegEnumValue( HKEY hKey, DWORD dwIndex, LPTSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData );
hKey Long,一个已打开项的句柄,或者指定一个标准项名
dwIndex Long,欲获取值的索引。注意第一个值的索引编号为零
lpValueName String,用于装载位于指定索引处值名的一个缓冲区
lpcbValueName Long,用于装载lpValueName缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量,所以要注意的是再次使用时得重新赋值,可参阅例程。
lpReserved Long,未用;设为零
lpType Long,用于装载值的类型代码的变量
lpData Byte,用于装载值数据的一个缓冲区
lpcbData Long,用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际载入缓冲区的字符数量

实现功能
1.新建基于对话框的应用程序
2.添加一列表控件关联变量 CListCtrl m_List;用于显示获取的启动软件,添加按钮<写入注册表 实现开机启动><读取注册表 全部开机启动软件>关联点击函数
void CGkbc8Dlg::OnWrite()
{
CRegKey myKey;
if(myKey.Open(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run") != ERROR_SUCCESS)
AfxMessageBox("error open reg key!!!");
else
{
CString path;
GetModuleFileName(NULL,path.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
path.ReleaseBuffer();
if(myKey.SetKeyValue("工控编程吧", path) != ERROR_SUCCESS)
AfxMessageBox("error SET VALUE!!!");
}
myKey.Close();
}
void CGkbc8Dlg::OnRead()
{
m_List.DeleteAllItems();
AllRegKey(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Microsoft\\Windows\\CurrentVersion\\Run"));
}
再添加两自定义函数, BOOL AllRegKeyValue(HKEY hRootKey, LPCTSTR szSubKey); //遍历子键全部值
BOOL AllRegKey(HKEY hRootKey, LPCTSTR szSubKey); //遍历子键的全部子键。实现注册表子键值的遍历
BOOL CGkbc8Dlg::AllRegKey(HKEY hRootKey, LPCTSTR szSubKey)
{
if(!AllRegKeyValue( hRootKey, szSubKey) )
return FALSE;

HKEY hSubKey;
DWORD dwIndex = 0;
long lResult;
lResult = RegOpenKeyEx(hRootKey, szSubKey, 0, KEY_READ, &hSubKey); // 打开注册表
if(ERROR_SUCCESS == lResult)
{
TCHAR szKeyName[256] = { 0 };
DWORD cbName = 256*sizeof(TCHAR);
lResult = RegEnumKeyEx(hSubKey, dwIndex, szKeyName, &cbName, 0, NULL, NULL, NULL); // 获取字段
while (lResult == ERROR_SUCCESS)
{
AllRegKeyValue(hSubKey,szKeyName);

cbName = 256*sizeof(TCHAR);//必需重新赋值
dwIndex++;
lResult = RegEnumKeyEx(hSubKey, dwIndex, szKeyName, &cbName, 0, NULL, NULL, NULL);
}
RegCloseKey(hSubKey); // 关闭注册表
return TRUE;
}
RegCloseKey(hSubKey);
return FALSE;
}

我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:375.上位机VC MFC通过注册表获取全部开机启动软件.zip 
文件大小:138.39 KB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索