设置系统启动时程序自动运行
2006-06-24 06:44
465 查看
UpdateData(true);
const TCHAR gcszAutoRunKey[]= _T( "Software\\microsoft\\windows\\currentversion\\run" );
const TCHAR gcszWindowClass[] = _T("我的程序");//设置开机程序自启动键值位置和其下新建子键值(可设为程序名)
HKEY hKey;
LONG lRet, lRet2;
DWORD dwLength, dwDataType;
TCHAR szItemValue[MAX_PATH], szPrevValue[MAX_PATH];
TCHAR szBuffer[MAX_PATH];
GetModuleFileName( NULL, szItemValue, MAX_PATH ); // 得到程序全路径名
//MessageBox(szItemValue);
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, gcszAutoRunKey,0, KEY_READ | KEY_WRITE, &hKey );
if( lRet != ERROR_SUCCESS ) // 打开注册表键
MessageBox("设置自动启动失败,请检查注册表是否被禁用!","使闹钟",MB_OK| MB_ICONEXCLAMATION);
dwLength = sizeof( szBuffer );
lRet = RegQueryValueEx( hKey, gcszWindowClass,NULL, &dwDataType, (LPBYTE)szBuffer, &dwLength );
// 查询自动运行项目是否存在
if( m_bAutoRun ) // 添加
{
if( lRet != ERROR_SUCCESS ) // 自动运行项目不存在
lRet2 = RegSetValueEx( hKey, gcszWindowClass,0, REG_SZ, (LPBYTE)szItemValue, strlen( szItemValue ) );
else // 存在, 比较二者是否相同
{
dwLength = sizeof( szPrevValue );
lRet2 = RegQueryValueEx( hKey, gcszWindowClass,0, &dwDataType,(LPBYTE)szPrevValue, &dwLength );
if( lstrcmp( szItemValue, szPrevValue ) ) // 不相同则替换
{
lRet2 = RegDeleteValue( hKey, gcszWindowClass );
lRet2 = RegSetValueEx( hKey, gcszWindowClass,0, REG_SZ,(LPBYTE)szItemValue, strlen( szItemValue ) );
}
}
}
else // 删除
if( lRet == ERROR_SUCCESS )
lRet2 = RegDeleteValue( hKey, gcszWindowClass ); // 自动运行项目已存在则删除
RegCloseKey( hKey ); // 关闭注册表键
if( lRet2 != ERROR_SUCCESS )
MessageBox("设置自动启动失败,请检查注册表是否被禁用!","使闹钟",MB_OK| MB_ICONEXCLAMATION);
const TCHAR gcszAutoRunKey[]= _T( "Software\\microsoft\\windows\\currentversion\\run" );
const TCHAR gcszWindowClass[] = _T("我的程序");//设置开机程序自启动键值位置和其下新建子键值(可设为程序名)
HKEY hKey;
LONG lRet, lRet2;
DWORD dwLength, dwDataType;
TCHAR szItemValue[MAX_PATH], szPrevValue[MAX_PATH];
TCHAR szBuffer[MAX_PATH];
GetModuleFileName( NULL, szItemValue, MAX_PATH ); // 得到程序全路径名
//MessageBox(szItemValue);
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, gcszAutoRunKey,0, KEY_READ | KEY_WRITE, &hKey );
if( lRet != ERROR_SUCCESS ) // 打开注册表键
MessageBox("设置自动启动失败,请检查注册表是否被禁用!","使闹钟",MB_OK| MB_ICONEXCLAMATION);
dwLength = sizeof( szBuffer );
lRet = RegQueryValueEx( hKey, gcszWindowClass,NULL, &dwDataType, (LPBYTE)szBuffer, &dwLength );
// 查询自动运行项目是否存在
if( m_bAutoRun ) // 添加
{
if( lRet != ERROR_SUCCESS ) // 自动运行项目不存在
lRet2 = RegSetValueEx( hKey, gcszWindowClass,0, REG_SZ, (LPBYTE)szItemValue, strlen( szItemValue ) );
else // 存在, 比较二者是否相同
{
dwLength = sizeof( szPrevValue );
lRet2 = RegQueryValueEx( hKey, gcszWindowClass,0, &dwDataType,(LPBYTE)szPrevValue, &dwLength );
if( lstrcmp( szItemValue, szPrevValue ) ) // 不相同则替换
{
lRet2 = RegDeleteValue( hKey, gcszWindowClass );
lRet2 = RegSetValueEx( hKey, gcszWindowClass,0, REG_SZ,(LPBYTE)szItemValue, strlen( szItemValue ) );
}
}
}
else // 删除
if( lRet == ERROR_SUCCESS )
lRet2 = RegDeleteValue( hKey, gcszWindowClass ); // 自动运行项目已存在则删除
RegCloseKey( hKey ); // 关闭注册表键
if( lRet2 != ERROR_SUCCESS )
MessageBox("设置自动启动失败,请检查注册表是否被禁用!","使闹钟",MB_OK| MB_ICONEXCLAMATION);
相关文章推荐
- 将程序设置为服务,在系统登录界面自动启动(解决:不间断运行的程序遇到电脑重启,且电脑登录需要账号和密码)
- [经验分享] windows2008服务器设置系统启动时程序自动运行
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)
- 系统开机自动运行程序和自动启动服务 (转载)
- 设置嵌入式系统开机自动启动程序
- linux 如何在文件系统启动后自动运行我的程序
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动
- 让程序在Windows CE系统启动时自动运行的两种方法
- 怎样在android系统启动时自动运行自己的程序
- 怎样在android系统启动时自动运行自己的程序
- 系统开机自动运行程序和自动启动服务
- Ubuntu Linux系统下自动启动程序的设置
- 系统自动以root登录,并自动启动用户程序的设置方法
- windows中系统开机自动运行程序和自动启动服务
- windows中系统开机自动运行程序和自动启动服务
- 系统开机自动运行程序和自动启动服务
- linux 系统服务/程序 启动运行 怎么样才能自动运行
- linux操作之:设置系统启动时,自动启动一些程序,或者执行一些命令
- 怎样在android系统启动时自动运行自己的程序(RECEIVE_BOOT_COMPLETED)