MFC模拟 Windows 文件可视化系统(下)

简介: MFC模拟 Windows 文件可视化系统

6. 编写具体逻辑


6.1 数据初始化


在OnInitDialog中进行界面数据初始化


// 控件初始化
m_ImageList.Create(32, 32, ILC_COLOR32, 10, 30);    // 创建图像序列CImageList对象 
m_tree.SetImageList(&m_ImageList, LVSIL_NORMAL);    // 为树形控件设置图像序列  
HICON hIcon = theApp.LoadIcon(IDI_ICON_FILE);     // 图标句柄
m_ImageList.Add(hIcon);                 // 图标添加到图像序列
m_tree.ModifyStyle(NULL, TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS);
m_hRoot = m_tree.InsertItem(_T("我的电脑"));    // 插入根节点
GetLogicalDrive(m_hRoot);             // 自定义函数 获取驱动
GetDriveDir(m_hRoot);               // 自定义函数 获取驱动子项
m_tree.Expand(m_hRoot, TVE_EXPAND);         // 展开或折叠子项列表 TVE_EXPAND展开列表
//m_list.InsertColumn(0, "序号", LVCFMT_LEFT, 40);
m_list.InsertColumn(0, _T("文件名"), LVCFMT_LEFT, 300);
m_list.InsertColumn(1, _T("类型"), LVCFMT_LEFT, 100);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP);
m_combo.SetMinVisibleItems(6);      // 设置显示的行数为5



6.2 各功能模块编写


不再一 一细分进行讲解了,全部功能代码都在下面了。


// 回退键点击事件:回退上一个路径
void CFileViewSystemDlg::OnBnClickedBack()
{
  // TODO: 在此添加控件通知处理程序代码
  CString strTemp;
  if (m_combo.GetCount() == 1)
  {
    MessageBox(L"提示",L"无可回退目录");
    return;
  }
  m_combo.GetLBText(1, strTemp);
  if (strTemp.Right(1) != "\\") 
  {
    strTemp += "\\";
  }
  if (IsDirectory(strTemp)) 
  {
    m_combo.DeleteString(0);
    m_combo.DeleteString(0);
    Refresh(strTemp);
  }
}
// 进入键点击事件:进入当前下拉框所填路径
void CFileViewSystemDlg::OnBnClickedEnter()
{
  // TODO: 在此添加控件通知处理程序代码
  CString strTemp;
  m_combo.GetWindowText(strTemp);
  if (strTemp.Right(1) != "\\") {
    strTemp += "\\";
  }
  if (IsDirectory(strTemp)) {
    Refresh(strTemp);
  }
}
// 下拉框路径改变事件:路径改变,listbox转到相应目录下
void CFileViewSystemDlg::OnCbnSelchangeDirpath()
{
  // TODO: 在此添加控件通知处理程序代码
  CString strTemp;
  int nIndex = m_combo.GetCurSel();
  m_combo.GetLBText(nIndex, strTemp);
  if (strTemp.Right(1) != "\\") {
    strTemp += "\\";
  }
  if (IsDirectory(strTemp)) {
    Refresh(strTemp);
  }
}
// 点击展开左侧树目录事件:展现当前结点的子节点
void CFileViewSystemDlg::OnTvnItemexpandedTree(NMHDR *pNMHDR, LRESULT *pResult)
{
  LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
  // TODO: 在此添加控件通知处理程序代码
  TVITEM item = pNMTreeView->itemNew;   // 发送/接受当前关于树形视图项目信息
  // 如果当前项 是 选中的项 不用展开 直接返回
  if (item.hItem == m_hRoot)
  {
    return;
  }
  HTREEITEM hChild = m_tree.GetChildItem(item.hItem); // 获取指定位置的子项
  while (hChild)
  {
    AddSubDir(hChild);                // 添加子目录
    hChild = m_tree.GetNextItem(hChild, TVGN_NEXT); // 获取树形控件TVGN_NEXT下兄弟项
  }
  *pResult = 0;
}
// 点击选择某一项目录树结点事件:目录下内容显示到右侧目录列表中
void CFileViewSystemDlg::OnTvnKeydownTree(NMHDR *pNMHDR, LRESULT *pResult)
{
  LPNMTVKEYDOWN pTVKeyDown = reinterpret_cast<LPNMTVKEYDOWN>(pNMHDR);
  // TODO: 在此添加控件通知处理程序代码
  *pResult = 0;
}
// 改变当前选中目录树结点事件:目录下内容显示到右侧目录列表中,展示当前树子节点
void CFileViewSystemDlg::OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult)
{
  LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
  // TODO: 在此添加控件通知处理程序代码
  m_list.DeleteAllItems();    // 清空右侧列表
  TVITEM item = pNMTreeView->itemNew;
  if (item.hItem == m_hRoot) 
  {
    return;
  }
  CString str = GetFullPath(item.hItem);
  if (str.Right(1) != "\\") 
  {
    str += "\\";
  }
  // 添加到下拉框中
  m_combo.InsertString(0,str);
  m_combo.SetCurSel(0);
  str += "*.*";
  CFileFind file;
  BOOL bContinue = file.FindFile(str);
  // 右侧显示目录下文件(夹)
  while (bContinue)
  {
    bContinue = file.FindNextFileW();
    if (!file.IsDots())   // 文件名是否是包含"."或".."
    {
      SHFILEINFO info = {0};    // 存文件的信息
      CString tmp = str;
      int index = tmp.Find(_T("*.*"));
      tmp.Delete(index, 3);   // 删除后缀
      SHGetFileInfo(tmp+file.GetFileName(),0,&info,sizeof(&info), SHGFI_DISPLAYNAME | SHGFI_ICON);  // 获取文件信息
      int i = m_ImageList.Add(info.hIcon);
      m_list.SetImageList(&m_ImageList,LVSIL_SMALL);
      m_list.InsertItem(i, info.szDisplayName, i);
    }
  }
  *pResult = 0;
}
// 目录列表中鼠标左键双击事件:
void CFileViewSystemDlg::OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
  LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  // TODO: 在此添加控件通知处理程序代码
  NM_LISTVIEW* pNMListCtrl = (NM_LISTVIEW*)pNMHDR;  // 该变量是个结构体指针,该结构体中存放着双击的行号(iItem),以及列号(iSubItem),当未选中时返回-1
  int nItem = pNMListCtrl->iItem;     // 行号 
  // 判断双击内容是否存在
  if (nItem >= 0 && nItem < m_list.GetItemCount())
  {
    CString str_tmp;
    m_combo.GetWindowText(str_tmp);
    if (str_tmp.Right(1) != "\\") {
      str_tmp += "\\";
    }
    str_tmp += m_list.GetItemText(nItem, 0);  // 选中行的第1项,索引为0
    Refresh(str_tmp); // 调用刷新函数 刷新列表
  }
  *pResult = 0;
}
// 目录列表中鼠标右键点击事件
void CFileViewSystemDlg::OnNMRClickList(NMHDR *pNMHDR, LRESULT *pResult)
{
  LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  // TODO: 在此添加控件通知处理程序代码
  // 没有选中某一项的时候:展开 新建粘贴刷新
  if (pNMItemActivate->iItem == -1) 
  {
    POINT m_point1;
    GetCursorPos(&m_point1);
    CMenu menu;
    menu.LoadMenu(IDR_NEWFILE_EDIT);
    menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, m_point1.x, m_point1.y, this);
    return;
  }
  // 选中某一项时候:展开 打开复制删除
  POINT m_point2;
  GetCursorPos(&m_point2);
  int x = m_list.GetSelectionMark();
  CMenu menu;
  menu.LoadMenu(IDR_POPUP_EDIT);
  CMenu* pop = menu.GetSubMenu(0);
  pop->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, m_point2.x, m_point2.y, this);
  *pResult = 0;
}
// 双击打开
void CFileViewSystemDlg::OnOpen()
{
  int nItem = m_list.GetSelectionMark();
  if (nItem >= 0 && nItem < m_list.GetItemCount())  // 判断双击内容是否存在
  {
    CString strTemp;
    m_combo.GetWindowText(strTemp);
    if (strTemp.Right(1) != "\\") {
      strTemp += "\\";
    }
    strTemp += m_list.GetItemText(nItem, 0);  // 选中行的第1项,索引为0
    Refresh(strTemp);
  }
}
// 右键文件复制
void CFileViewSystemDlg::OnCopy()
{
  int nItem = m_list.GetSelectionMark();
  if (nItem >= 0 && nItem < m_list.GetItemCount())  // 判断选中内容是否存在
  {
    CString strTemp, curStr;
    m_combo.GetWindowText(strTemp);
    if (strTemp.Right(1) != "\\") {
      strTemp += "\\";
    }
    curStr = strTemp;
    strTemp += m_list.GetItemText(nItem, 0);    // 选中行的第1项,索引为0
    //dir_path = strTemp;
    CopyToClipboard(strTemp);
  }
}
// 右键删除
void CFileViewSystemDlg::OnDelete()
{
  int nItem = m_list.GetSelectionMark();
  if (nItem >= 0 && nItem < m_list.GetItemCount())
  {
    CString strTemp, curStr;
    m_combo.GetWindowText(strTemp);
    if (strTemp.Right(1) != "\\") {
      strTemp += "\\";
    }
    curStr = strTemp;
    strTemp += m_list.GetItemText(nItem, 0);
    // 如果是目录删除目录,如果是文件删除文件
    if (GetFileAttributes(strTemp) & FILE_ATTRIBUTE_DIRECTORY) 
    {
      DeleteFolder(strTemp);
    }
    else {
      DeleteFile(strTemp);
    }
    Refresh(curStr);
  }
}
// 右键新建文件夹
void CFileViewSystemDlg::OnNewfile()
{
  CString str;
  m_combo.GetWindowText(str);
  if (str.Right(1) != "\\") {
    str += "\\";
  }
  str += _T("新建文件夹1");
  while (PathIsDirectory(str)) {
    str.Delete(str.GetLength() - 1, 1);
    CString chg;
    chg.Format(_T("%d"), f_cnt);
    str += chg;
    f_cnt++;
  }
  if (!PathIsDirectory(str))
  {
    CreateDirectory(str, NULL); // 创建目录,已有的话不影响
  }
  CString strTemp;
  m_combo.GetWindowText(strTemp);
  if (strTemp.Right(1) != "\\") {
    strTemp += "\\";
  }
  Refresh(strTemp);
}
// 右键新建txt
void CFileViewSystemDlg::OnTxt()
{
  CString str;
  m_combo.GetWindowText(str);
  if (str.Right(1) != "\\") {
    str += "\\";
  }
  str += _T("新建文本文档1.txt");
  while (PathFileExists(str)) {
    CString chg;
    chg.Format(_T("%d"), t_cnt);
    str.SetAt(str.Find(_T(".")) - 1, chg.GetAt(0));
    t_cnt++;
  }
  CFile file(str, CFile::modeCreate);
  file.Close();
  CString strTemp;
  m_combo.GetWindowText(strTemp);
  if (strTemp.Right(1) != "\\") {
    strTemp += "\\";
  }
  Refresh(strTemp);
}
// 右键新建Docx
void CFileViewSystemDlg::OnDocx()
{
  CString str;
  m_combo.GetWindowText(str);
  if (str.Right(1) != "\\") {
    str += "\\";
  }
  str += _T("新建DOCX文档1.docx");
  while (PathFileExists(str)) {
    CString chg;
    chg.Format(_T("%d"), d_cnt);
    str.SetAt(str.Find(_T(".")) - 1, chg.GetAt(0));
    d_cnt++;
  }
  CFile file(str, CFile::modeCreate);
  file.Close();
  CString strTemp;
  m_combo.GetWindowText(strTemp);
  if (strTemp.Right(1) != "\\") {
    strTemp += "\\";
  }
  Refresh(strTemp);
}
// 右键刷新
void CFileViewSystemDlg::OnRefresh()
{
  CString strTemp;
  m_combo.GetWindowText(strTemp);
  if (strTemp.Right(1) != "\\") {
    strTemp += "\\";
  }
  Refresh(strTemp);
}
// 右键粘贴
void CFileViewSystemDlg::OnPaste()
{
  CString str;
  m_combo.GetWindowText(str);
  if (str.Right(1) != "\\") {
    str += "\\";
  }
  PasteToFile(str); // 调用粘贴
  CString strTemp;
  m_combo.GetWindowText(strTemp);
  if (strTemp.Right(1) != "\\") {
    strTemp += "\\";
  }
  Refresh(strTemp);
}
// 删除文件夹
bool CFileViewSystemDlg::DeleteFolder(LPCTSTR pstrFolder)
{
  if ((NULL == pstrFolder))
  {
    return FALSE;
  }
  // 检查输入目录是否是合法目录
  if (!IsDirectory(pstrFolder))
  {
    return FALSE;
  }
  // 创建源目录中查找文件的通配符
  CString strWildcard(pstrFolder);
  if (strWildcard.Right(1) != _T('\\'))
  {
    strWildcard += _T("\\");
  }
  strWildcard += _T("*.*");
  // 打开文件查找,查看源目录中是否存在匹配的文件
  // 调用FindFile后,必须调用FindNextFile才能获得查找文件的信息
  CFileFind finder;
  BOOL bWorking = finder.FindFile(strWildcard);
  while (bWorking)
  {
    // 查找下一个文件
    bWorking = finder.FindNextFile();
    // 跳过当前目录“.”和上一级目录“..”
    if (finder.IsDots())
    {
      continue;
    }
    // 得到当前目录的子文件的路径
    CString strSubFile = finder.GetFilePath();
    // 判断当前文件是否是目录,
    // 如果是目录,递归调用删除目录,
    // 否则,直接删除文件
    if (finder.IsDirectory())
    {
      if (!DeleteFolder(strSubFile))
      {
        finder.Close();
        return FALSE;
      }
    }
    else
    {
      if (!DeleteFile(strSubFile))
      {
        finder.Close();
        return FALSE;
      }
    }
  } 
  // 关闭文件查找
  finder.Close();
  // 删除当前空目录
  return RemoveDirectory(pstrFolder);
}
// 判断目录是否存在
bool CFileViewSystemDlg::IsDirectory(LPCTSTR pstrPath)
{
  if (NULL == pstrPath)
  {
    return FALSE;
  }
  // 去除路径末尾的反斜杠
  CString strPath = pstrPath;
  if (strPath.Right(1) == _T('\\'))
  {
    strPath.Delete(strPath.GetLength() - 1);
  }
  CFileFind finder;
  BOOL bRet = finder.FindFile(strPath);
  if (!bRet)
  {
    return FALSE;
  }
  // 判断该路径是否是目录
  finder.FindNextFile();
  bRet = finder.IsDirectory();
  finder.Close();
  return bRet;
}
// 路径赋值
void CFileViewSystemDlg::CopyToClipboard(CString dirPath)
{
  dir_path = dirPath;
}
// 粘贴文件
void CFileViewSystemDlg::PasteToFile(CString dirPath)
{
  if (GetFileAttributes(dir_path) & FILE_ATTRIBUTE_DIRECTORY) {
    dirPath += _T("新建文件夹1");
    while (PathIsDirectory(dirPath)) {
      dirPath.Delete(dirPath.GetLength() - 1, 1);
      CString chg;
      chg.Format(_T("%d"), f_cnt);
      dirPath += chg;
      f_cnt++;
    }
    if (!PathIsDirectory(dirPath))
    {
      CreateDirectory(dirPath, NULL); // 创建目录,已有的话不影响
    }
    if (dirPath.Right(1) != "\\")   // 目录的最右边需要“\”字符
      dirPath += "\\";
    CFileFind filefind;
    CString path = dir_path;
    if (path.Right(1) != "\\")      // 目录的最右边需要“\”字符
      path += "\\";
    path += "*.*";
    BOOL res = filefind.FindFile(path);
    while (res)
    {
      res = filefind.FindNextFile();
      if (!filefind.IsDirectory() && !filefind.IsDots())
      {
        CopyFile(filefind.GetFilePath(), dirPath + filefind.GetFileName(), TRUE); // 如果目标已经存在,不拷贝(True)并返回False,覆盖目标(false)
      }
    }
    filefind.Close();
  }
  else {
    CString type = dir_path;
    CString filename = type.Right(type.GetLength() - type.ReverseFind('\\') - 1);
    dirPath += filename;
    while (PathFileExists(dirPath)) {
      CString chg;
      chg.Format(_T("%d"), t_cnt);
      dirPath.SetAt(dirPath.Find(_T(".")) - 1, chg.GetAt(0));
      t_cnt++;
    }
    CopyFile(dir_path, dirPath, TRUE);    // 如果目标已经存在,不拷贝(True)并返回False,覆盖目标(false)
  }
}
// 获取系统分区驱动器字符串信息
void CFileViewSystemDlg::GetLogicalDrive(HTREEITEM hParent)
{
  TCHAR szBuf[100];
  memset(szBuf, 0, 100);
  DWORD len = GetLogicalDriveStrings(sizeof(szBuf) / sizeof(TCHAR), szBuf);
  for (TCHAR* s = szBuf; *s; s += _tcslen(s) + 1)
  {
    CString k = s;
    m_tree.InsertItem(k, hParent);
  }
}
// 获取目录下所有子项
void CFileViewSystemDlg::GetDriveDir(HTREEITEM hParent)
{
  HTREEITEM hChild = m_tree.GetChildItem(hParent);
  while (hChild)
  {
    CString strText = m_tree.GetItemText(hChild); // 检索列表中项目文字
    if (strText.Right(1) != "\\")                   // 从右边1开始获取从右向左nCount个字符
      strText += _T("\\");
    strText += "*.*";
    // 将当前目录下文件枚举并InsertItem树状显示
    CFileFind file;                                       // 定义本地文件查找
    BOOL bContinue = file.FindFile(strText);              // 查找包含字符串的文件
    while (bContinue)
    {
      bContinue = file.FindNextFile();          // 查找下一个文件
      if (file.IsDirectory() && !file.IsDots())     // 找到文件为内容且不为点"."
        m_tree.InsertItem(file.GetFileName(), hChild);  // 添加盘符路径下树状文件夹
    }
    GetDriveDir(hChild);                  // 递归调用
    hChild = m_tree.GetNextItem(hChild, TVGN_NEXT);     // 获取树形控件TVGN_NEXT下兄弟项
  }
}
// 获取树项目全根路径
CString CFileViewSystemDlg::GetFullPath(HTREEITEM hCurrent)
{
  CString str_Tmp;
  CString str_Retrun;
  while (hCurrent != m_hRoot)
  {
    str_Tmp = m_tree.GetItemText(hCurrent);
    if (str_Tmp.Right(1)!="\\")
    {
      str_Tmp += "\\";
    }
    str_Retrun = str_Tmp + str_Retrun;
    hCurrent = m_tree.GetParentItem(hCurrent); // 返回父项目句柄
  }
  return str_Retrun;
}
// 添加子目录
void CFileViewSystemDlg::AddSubDir(HTREEITEM hParent)
{
  CString strPath = GetFullPath(hParent);     // 获取全路径
  if (strPath.Right(1) != "\\")
    strPath += "\\";
  strPath += "*.*";
  CFileFind file;
  BOOL bContinue = file.FindFile(strPath);    // 查找包含字符串的文件
  while (bContinue)
  {
    bContinue = file.FindNextFile();      // 查找下一个文件
    if (file.IsDirectory() && !file.IsDots())
    {
      m_tree.InsertItem(file.GetFileName(), hParent);
    }
  }
}
// 刷新/更新ListCtrl
void CFileViewSystemDlg::Refresh(CString str)
{
  // 目录的文件系统的属性:如果是目录  就展开操作
  if (GetFileAttributes(str) & FILE_ATTRIBUTE_DIRECTORY)
  {
    m_combo.InsertString(0, str);
    m_combo.SetCurSel(0);
    if (str.Right(1) != "\\") {
      str += "\\";
    }
    str += "*.*";
    CFileFind file;
    BOOL bContinue = file.FindFile(str);
    m_list.DeleteAllItems();
    while (bContinue) {
      bContinue = file.FindNextFileW();
      if (!file.IsDots()) {
        SHFILEINFO info = { 0 };
        CString temp = str;
        int index = temp.Find(_T("*.*"));
        temp.Delete(index, 3);
        SHGetFileInfo(temp + file.GetFileName(), 0, &info, sizeof(&info), SHGFI_DISPLAYNAME | SHGFI_ICON);
        int i = m_ImageList.Add(info.hIcon);
        m_list.SetImageList(&m_ImageList, LVSIL_SMALL);
        m_list.InsertItem(i, info.szDisplayName, i);
      }
    }
  }
  // 是文件就打开他
  else 
  {
    if (PathFileExists(str))
      ShellExecute(NULL, TEXT("OPEN"), str, NULL, NULL, SW_SHOWNORMAL); // 调用外部程序打开文件
  }
}
相关文章
|
12月前
|
安全 数据安全/隐私保护 Windows
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
1029 16
如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
|
12月前
|
关系型数据库 虚拟化 UED
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
446 7
Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具
|
7月前
|
运维 安全 Linux
【清爽加速】Windows 11 Pro 24H2-Emmy精简系统
“清爽加速”Windows 11 Pro 24H2 针对老旧或低配设备,通过精简系统、优化服务与简化装机流程,降低资源占用,提升运行流畅度,兼顾安全性与稳定性,让老设备也能轻松应对日常办公与轻度娱乐需求。
426 1
【清爽加速】Windows 11 Pro 24H2-Emmy精简系统
|
7月前
|
安全 搜索推荐 开发者
【适度精简】Windows 7 旗舰版-emmy精简系统
Windows 7旗舰版因硬件占用高、冗余组件多、兼容性差及缺乏安全更新等问题,逐渐难以满足用户需求。适度精简版通过去除无用组件、优化性能与安全性,提升老旧设备运行效率,增强兼容性与稳定性,同时保留用户熟悉的操作界面,降低学习成本,满足个性化需求,延续Windows 7的实用价值。
345 2
|
7月前
|
安全 数据安全/隐私保护 Windows
ZyperWin++使用教程!让Windows更丝滑!c盘飘红一键搞定!ZyperWin++解决系统优化、Office安装和系统激活
ZyperWin++是一款仅5MB的开源免费Windows优化工具,支持快速优化、自定义设置与垃圾清理,兼具系统加速、隐私保护、Office安装等功能,轻便无广告,小白也能轻松上手,是提升电脑性能的全能管家。
2051 0
|
8月前
|
Ubuntu Linux Windows
windows11系统安装ubuntu系统详细步骤
安装后,您可以直接从商店启动应用程序来源
1482 0
|
10月前
|
Ubuntu Linux 数据安全/隐私保护
Windows中安装WSL 2和Ubuntu系统的教程
回看这一路,有趣吧?你已经跨界成为了一个Windows和Linux的桥梁。期待在代码的世界里,把一切玩得风生水起!
528 13
|
12月前
|
安全 Windows
“由于启动计算机时出现了页面文件配置问题,Windows在你的计算机上创建了一个临时页面文件。。。”的问题解决
本文主要介绍了因清理电脑垃圾文件时误删虚拟内存导致的Windows页面文件配置问题,并提供了详细的解决步骤。问题表现为开机后出现临时页面文件创建的提示弹窗。解决方法包括通过控制面板或快捷键进入高级系统设置,进而调整虚拟内存设置:进入性能选项中的虚拟内存栏,选择自动管理所有驱动器的分页文件大小,最后确认并重启计算机以恢复正常运行。
8815 5
“由于启动计算机时出现了页面文件配置问题,Windows在你的计算机上创建了一个临时页面文件。。。”的问题解决
|
9月前
|
持续交付 Windows
如何使用Sysprep准备Windows系统并使用自动应答
通过Sysprep准备Windows系统,可实现SID重置与系统定制。进入Sysprep后,可安装软件、设置默认桌面文件,并使用Windows SIM创建应答文件以实现自动化部署。适用于系统克隆与批量部署场景。
|
11月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
5441 0