系统相关功能开发(二)-磁盘操作
来源:互联网 发布:网络抽奖 编辑:程序博客网 时间:2024/05/29 17:40
1.监视硬盘
void CDiskOperDlg::OnButtonMonitorDisk()// 监视硬盘{UpdateData(TRUE);// 从控件获取数据DWORD dwWaitStatus; HANDLE dwChangeHandle;dwChangeHandle=FindFirstChangeNotification(m_DiskName, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME); if (dwChangeHandle==INVALID_HANDLE_VALUE) return; bMonitor = TRUE;WriteLog("正在监视%c盘重命名操作......", m_DiskName[0]);while (bMonitor) { dwWaitStatus = WaitForSingleObject(dwChangeHandle, INFINITE); if (dwWaitStatus == WAIT_OBJECT_0){WriteLog("检测到%s文件重命名操作",m_DiskName); MessageBox(m_DiskName,"检测到磁盘重命名操作");if (FindNextChangeNotification(dwChangeHandle) == FALSE) bMonitor = FALSE;}Sleep(100); } FindCloseChangeNotification(dwChangeHandle);}
2.格式化磁盘
void CDiskOperDlg::OnButtonFormat()// 格式化磁盘{UpdateData(TRUE);UINT uiDriver = m_DiskName[0] - 'A';HINSTANCE hInstance=LoadLibrary(_T("Shell32.dll")); if (hInstance == NULL) return; PFUNCTIONFORMAT pFunctionFormat=(PFUNCTIONFORMAT)GetProcAddress(hInstance, _T("SHFormatDrive")); if(pFunctionFormat==NULL) { // 如果没有获取格式化SHFormatDrive函数的指针,则返回FreeLibrary(hInstance); return; }DWORD dwResult = (pFunctionFormat)(this->m_hWnd, uiDriver, SHFMT_ID_DEFAULT, SHFMT_OPT_FULL);switch (dwResult){case SHFMT_ERROR:WriteLog("格式化磁盘%s发生错误", m_DiskName);break;case SHFMT_CANCEL:WriteLog("取消格式化磁盘%s", m_DiskName);break;case SHFMT_NOFORMAT:WriteLog("不能格式化磁盘%s", m_DiskName);break;default:WriteLog("格式化磁盘%s成功", m_DiskName);break;}FreeLibrary(hInstance); return; }
3.关闭磁盘共享
void CDiskOperDlg::OnButtonDelshare()// 关闭磁盘共享{UpdateData(TRUE);// 从控件获取数据WCHAR wsz[MAX_PATH];// 定义Unicode字符数组CString disk;// 定义磁盘共享名称变量disk.Format("%c$", m_DiskName[0]);// 格式化磁盘共享名称wcscpy(wsz, disk.AllocSysString()); // 将共享名称转换到Unicode字符数组NET_API_STATUS dwStatus = NetShareDel(NULL,(LPWSTR)wsz,0);// 关闭磁盘共享switch(dwStatus)// 判断操作返回值,并输出提示信息{case NERR_Success:WriteLog("成功关闭%s磁盘共享\n", disk);break;case ERROR_ACCESS_DENIED:WriteLog("关闭%s磁盘共享错误\n原因=用户没有权限执行此项操作。", disk); break;case ERROR_INVALID_PARAMETER:WriteLog("关闭%s磁盘共享错误\n原因=参数无效。", disk); break;case ERROR_NOT_ENOUGH_MEMORY:WriteLog("关闭%s磁盘共享错误\n原因=内存不足。", disk); break;case NERR_NetNameNotFound:WriteLog("关闭%s磁盘共享错误\n原因=不存在此共享名称。", disk); break;default:WriteLog("关闭%s磁盘共享错误\n原因=未知。", disk); break;}}
4.设置磁盘卷标
void CDiskOperDlg::OnButtonSetvolum()// 设置磁盘卷标{UpdateData(TRUE);// 从控件获取数据if (SetVolumeLabel(m_DiskName, "我的系统盘")) // 设置磁盘卷标WriteLog("设置%s磁盘卷标成功", m_DiskName);else WriteLog("设置%s磁盘卷标失败", m_DiskName);}
5.磁盘碎片整理
void CDiskOperDlg::OnButtonSpzl()// 磁盘碎片整理{system("defrag E:");}
6.AT32转换为NTFS
void CDiskOperDlg::OnButtonFat32tontfs() // 从FAT32转换为NTFS{system("convert E: /FS:NTFS");}
7.隐藏磁盘分区
void CDiskOperDlg::OnButtonHidedisk()// 隐藏磁盘分区{UpdateData(TRUE);// 从控件获取数据memset(szPath,0x00, sizeof(szPath));// 初始化路径变量CString csDisk;// 定义磁盘名称csDisk.Format("%c:", m_DiskName[0]);// 格式化要隐藏的磁盘名称if (QueryDosDeviceA(csDisk, szPath, MAX_PATH) == 0)// 查询磁盘对应的设备路径{WriteLog("获取磁盘分区%s路径名失败", csDisk);// 查询失败,显示结果return;// 查询失败,返回}if (DefineDosDeviceA(DDD_REMOVE_DEFINITION, csDisk, NULL))// 删除设备路径名称的定义,即隐藏磁盘分区WriteLog("隐藏磁盘分区%s成功。\r\n路径名称=%s", csDisk, szPath);// 操作成功,显示操作日志elseWriteLog("隐藏磁盘分区%s失败。\r\n路径名称=%s", csDisk, szPath);// 操作失败,显示操作日志}
8.隐藏的磁盘分区
void CDiskOperDlg::OnButtonShowdisk()// 显示被隐藏的磁盘分区{UpdateData(TRUE);// 从控件获取数据CString csDisk;// 定义磁盘名称csDisk.Format("%c:", m_DiskName[0]);// 格式化要隐藏的磁盘名称if (DefineDosDevice(DDD_RAW_TARGET_PATH, csDisk, szPath))// 增加指定设备路径对应的磁盘名称WriteLog("显示被隐藏的磁盘分区%s成功。\r\n路径名称=%s", csDisk, szPath);// 操作成功,显示操作日志elseWriteLog("显示被隐藏的磁盘分区%s失败。\r\n路径名称=%s", csDisk, szPath);// 操作失败,显示操作日志}
9.更改分区号
void CDiskOperDlg::OnButtonUpdatediskno()// 更改分区号{UpdateData(TRUE);// 从控件获取数据HMODULE hKernel = GetModuleHandle("kernel32");// 装载kernel32.dllif (hKernel){// 获取GetVolumeNameForVolumeMountPointA函数入口PROCGET getAPI = (PROCGET)GetProcAddress(hKernel,"GetVolumeNameForVolumeMountPointA");// 获取DeleteVolumeMountPointA函数入口PROCDEL delAPI = (PROCDEL)GetProcAddress(hKernel,"DeleteVolumeMountPointA");// 获取SetVolumeMountPointA函数入口PROCSET setAPI = (PROCSET)GetProcAddress(hKernel,"SetVolumeMountPointA"); char szVolName [MAX_PATH];// 定义卷名变量DWORD dwLen;// 定义卷名长度变量if (!getAPI(m_DiskName, szVolName, &dwLen)) // 查询指定分区的卷名{WriteLog("查询分区%s的卷名失败。", m_DiskName);// 显示错误信息return;// 查询失败,返回}if (!delAPI(m_DiskName))// 删除卷名对应的分区号{WriteLog("删除卷名为%s对应的%s分区号。", szVolName, m_DiskName);// 显示错误信息return;// 删除失败,返回}if (!setAPI(_T("Z:\\"), szVolName))// 为卷设置新的分区号为Z{WriteLog("将卷名为%s的分区号改为Z:失败。", szVolName);// 显示错误信息return;// 设置失败,返回}WriteLog("将卷名为%s的分区号改为Z:成功。\r\n原来的分区号=%s", szVolName, m_DiskName);// 显示日志}elseWriteLog("装载kernel32失败!");// 显示装载DLL失败信息}
阅读全文
0 0
- 系统相关功能开发(二)-磁盘操作
- 系统相关功能开发(一)-获取磁盘信息
- 系统相关功能开发(四)-应用程序操作
- 系统相关功能开发(八)-消息
- 系统相关功能开发(九)-剪贴板
- 系统相关功能开发(六)-桌面相关
- 系统相关功能开发(三)-系统控制与调用
- 系统相关功能开发(五)-系统工具
- 系统相关功能开发(七)-系统信息
- 复制(克隆)二:ghost功能---磁盘克隆、分区(u盘)克隆、gho系统安装
- 磁盘、文件系统相关操作
- linux磁盘相关操作
- 系统相关功能开发(十)-鼠标键盘
- 【AIX】AIX磁盘相关操作
- .net reactor使用教程(二)——代码自动操作相关保护功能
- Dota2 AI 简易开发教程(二)——英雄出装及其相关功能
- 系统和磁盘操作命令
- 调用系统相关功能
- 1011:"水仙花数”问题2
- pip离线环境安装
- h3c交换机combo口的应用
- AUC ROC
- 防火墙配置
- 系统相关功能开发(二)-磁盘操作
- 最大熵模型总结
- CodeForces
- 【CodeForces
- 利用poi操作execl添加行和列
- [前端]TAG标签输入的实现
- Node.js腾讯云COS文件上传
- 迅捷CAD转换器怎么把CAD转换成jpg
- idea断点