VC 隐藏驱动器 -win7下测试可用
来源:互联网 发布:阿里巴巴 借壳 数据港 编辑:程序博客网 时间:2024/06/05 20:59
BOOL ReadRegistryDword(LPCTSTR lpSubKey, LPCTSTR lpName, DWORD *dwValue){ HKEY hKey = 0; DWORD dwSize = sizeof(*dwValue); DWORD dwType; LONG lStatus; SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; lStatus = RegOpenKeyEx(HKEY_CURRENT_USER, lpSubKey, 0, KEY_READ, &hKey); if (lStatus != ERROR_SUCCESS) { SetLastError(lStatus); return FALSE; } lStatus = RegQueryValueEx(hKey, lpName, NULL, &dwType, (BYTE *)dwValue, &dwSize); if (lStatus != ERROR_SUCCESS) { RegCloseKey(hKey); SetLastError(lStatus); return FALSE; } RegCloseKey(hKey); return dwType == REG_DWORD;}BOOL WriteRegistryDword(LPCTSTR lpSubKey, LPCTSTR lpName, DWORD dwValue){ HKEY hKey = 0; DWORD dwDisp; LONG lStatus; SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; lStatus = RegCreateKeyEx(HKEY_CURRENT_USER, lpSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, &sa, &hKey, &dwDisp); if (lStatus != ERROR_SUCCESS) { SetLastError(lStatus); return FALSE; } lStatus = RegSetValueEx(hKey, lpName, 0, REG_DWORD, (BYTE *)&dwValue, sizeof dwValue); if (lStatus != ERROR_SUCCESS) { RegCloseKey(hKey); SetLastError(lStatus); return FALSE; } RegCloseKey(hKey); return TRUE;}void HideVolume( int nDriveNo){ DWORD dwResult; DEV_BROADCAST_VOLUME* p01 = new DEV_BROADCAST_VOLUME; p01->dbcv_devicetype = 2; p01->dbcv_flags = 0; p01->dbcv_size = 20; p01->dbcv_unitmask = (1 << nDriveNo); char szRoot[] = { (char)(nDriveNo + 'A'), ':', '\\', 0 }; SHChangeNotify(SHCNE_DRIVEREMOVED, SHCNF_PATH, szRoot, NULL); DWORD dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVNODES_CHANGED, NULL); dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVICEREMOVECOMPLETE, (LPARAM)p01); DWORD value = 0; LPCTSTR skey = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"); if (!ReadRegistryDword(skey, _T("NoDrives"), &value)) { value = 0; } value |= (1 << nDriveNo); WriteRegistryDword(skey, _T("NoDrives"), value); SHChangeNotify(SHCNE_DRIVEREMOVED, SHCNF_PATH, szRoot, NULL); //DWORD dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVNODES_CHANGED, NULL); dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVICEREMOVECOMPLETE, (LPARAM)p01); delete[] p01; SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LPARAM("Policy"), SMTO_ABORTIFHUNG, 500, &dwResult);}void ShowVolume(int nDriveNo){ DWORD dwResult; DEV_BROADCAST_VOLUME* p01 = new DEV_BROADCAST_VOLUME; p01->dbcv_devicetype = 2; p01->dbcv_flags = 0; p01->dbcv_size = 20; p01->dbcv_unitmask = (1 << nDriveNo);//H char szRoot[] = { (char)(nDriveNo + 'A'), ':', '\\', 0 }; SHChangeNotify(SHCNE_DRIVEADD, SHCNF_PATH, szRoot, NULL); SHChangeNotify(SHCNE_UPDATEDIR, SHCNF_PATH, szRoot, NULL); DWORD dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVNODES_CHANGED, NULL); dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVICEARRIVAL, (LPARAM)p01); dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVNODES_CHANGED, NULL); DWORD value = 0; LPCTSTR skey = _T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"); if (!ReadRegistryDword(skey, _T("NoDrives"), &value)) { value = 0; } value &= ~(1 << nDriveNo); WriteRegistryDword(skey, _T("NoDrives"), value); SHChangeNotify(SHCNE_DRIVEADD, SHCNF_PATH, szRoot, NULL); SHChangeNotify(SHCNE_UPDATEDIR, SHCNF_PATH, szRoot, NULL); // DWORD dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVNODES_CHANGED, NULL); dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVICEARRIVAL, (LPARAM)p01); dwRecipients = BSM_APPLICATIONS; BroadcastSystemMessage(BSF_IGNORECURRENTTASK | BSF_POSTMESSAGE | BSF_FORCEIFHUNG, &dwRecipients, WM_DEVICECHANGE, DBT_DEVNODES_CHANGED, NULL); delete[] p01; SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LPARAM("Policy"), SMTO_ABORTIFHUNG, 500, &dwResult);}
阅读全文
0 0
- VC 隐藏驱动器 -win7下测试可用
- 如何在windows下隐藏驱动器
- win7 cmd下驱动器的切换
- VC下获取各个驱动器路径
- win7下安装vc++
- VC下编程实现网络驱动器的映射
- VC下编程实现网络驱动器的映射
- 隐藏显示驱动器(十六)
- 隐藏驱动器的方法
- VC 驱动器 DeviceIoControl
- VC 驱动器 DeviceIoControl
- VC++6.0 代码提示插件 Visual Assist X 10.6.1822(win7下VC6.0可用) 支持回车快捷键
- win7下运行VC++6.0
- vc控制控件的可用和隐藏和名称
- 组策略--隐藏本地驱动器
- win7驱动器中没有磁盘
- Win7下连接隐藏SSID的无线网络
- win7下简单隐藏文件方法
- C++程序设计--宏定义使用--返回值
- gradle find bugs
- HttpClient POST 请求每次响应延迟3秒问题
- HTML之固定定位
- css transform制作三角图形
- VC 隐藏驱动器 -win7下测试可用
- 1.偏头痛杨的rocketmq4.x入门之基础概念扫盲篇
- Oracle数据移动-导入和导出
- 多线程
- [lcm] MTK平台移植屏幕lcd过程要点
- IntelliJ IDEA 2016.2 配置Tomcat 运行Web项目
- pgpool(3.6.5)的一个巨坑
- handlebars获取json对象(单个Javabean对象)
- Spring Quartz 定时器源码和配置文件