请问怎样枚举系统中所有安装程序的列表````` 列举到后,怎样卸载(或禁止运行等操作)相应的应用程序呢?如果应用程序没有在系统中注册怎样用程序禁止它运行呢?请大家给出实现方法~~谢谢了``:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int _tmain(int argc, _TCHAR* argv[]){ HKEY hRoot; if ( ERROR_SUCCESS != RegOpenKey( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion") _T("\\App Management\\ARPCache"), &hRoot ) ) { cout << "Can not load registry!" << endl; return -1; } DWORD dwIndex = 0; DWORD dwBufLen = MAX_PATH; LPTSTR lpName = (LPTSTR)malloc( dwBufLen ); while( true ) { DWORD dwNameLen = dwBufLen; LONG lr = RegEnumKeyEx( hRoot, dwIndex, lpName, &dwNameLen, NULL, NULL, NULL, NULL ); if ( lr == ERROR_MORE_DATA ) { dwBufLen *= 2; realloc( lpName, dwBufLen ); } else if ( lr == ERROR_NO_MORE_ITEMS ) { break; } else if ( lr == ERROR_SUCCESS ) { cout << dwIndex + 1 << ". ";#ifdef _UNICODE int nOutLen = WideCharToMultiByte( CP_ACP, 0, lpName, (int)dwNameLen, NULL, 0, NULL, NULL ); if ( nOutLen != 0 ) { LPSTR lpOut = (LPSTR)malloc( nOutLen + 1 ); nOutLen = WideCharToMultiByte( CP_ACP, 0, lpName, (int)dwNameLen, lpOut, nOutLen + 1, NULL, NULL ); lpOut[nOutLen] = '\0'; if ( nOutLen != 0 ) { cout << lpOut << endl; } }#else cout << lpName << endl;#endif dwIndex++; } else { cout << "Enum faild!" << endl; } } free( lpName ); RegCloseKey( hRoot ); system( "pause" ); return 0;} 触摸屏程序虚拟键盘问题 奇怪的问题,请高手指点,程序必须在当前焦点下才能够执行! CRichEditCtrl如何实现向上查找功能? 对话框无法弹出 为啥串口通信特别慢? 谁作过指纹考勤来指导一下 SetScrollSizes的问题 SOS:关于多线程访问数据库 如何在某个字段中随机取一个值? 点对点通讯的最后一个问题, For 高手Only 怎样才能在xp下调试控制台程序时,dos窗口运行完成后不关闭呢 我用CString在截取时是一个字节一个字节的截取。这样如果内容里有英文和汉字就有可能出现乱码。我想它是一个汉字时就取一个汉字。是英文
int _tmain(int argc, _TCHAR* argv[])
{
HKEY hRoot;
if ( ERROR_SUCCESS != RegOpenKey( HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion")
_T("\\App Management\\ARPCache"), &hRoot ) )
{
cout << "Can not load registry!" << endl;
return -1;
}
DWORD dwIndex = 0;
DWORD dwBufLen = MAX_PATH;
LPTSTR lpName = (LPTSTR)malloc( dwBufLen );
while( true )
{
DWORD dwNameLen = dwBufLen;
LONG lr = RegEnumKeyEx( hRoot, dwIndex, lpName,
&dwNameLen, NULL, NULL, NULL, NULL );
if ( lr == ERROR_MORE_DATA )
{
dwBufLen *= 2;
realloc( lpName, dwBufLen );
}
else if ( lr == ERROR_NO_MORE_ITEMS )
{
break;
}
else if ( lr == ERROR_SUCCESS )
{
cout << dwIndex + 1 << ". ";
#ifdef _UNICODE
int nOutLen = WideCharToMultiByte( CP_ACP, 0, lpName,
(int)dwNameLen, NULL, 0, NULL, NULL );
if ( nOutLen != 0 )
{
LPSTR lpOut = (LPSTR)malloc( nOutLen + 1 );
nOutLen = WideCharToMultiByte( CP_ACP, 0, lpName,
(int)dwNameLen, lpOut, nOutLen + 1, NULL, NULL );
lpOut[nOutLen] = '\0';
if ( nOutLen != 0 )
{
cout << lpOut << endl;
}
}
#else
cout << lpName << endl;
#endif
dwIndex++;
}
else
{
cout << "Enum faild!" << endl;
}
}
free( lpName );
RegCloseKey( hRoot ); system( "pause" );
return 0;
}