zoukankan      html  css  js  c++  java
  • vc++基础班[24]---系统各种路径信息的获取

    vc++基础班[24]---系统各种路径信息的获取
    ------------------------------------------ Begin ----------------------------------------
     
    ①、Windows、System32、temp 等目录的获取:
    TCHAR szPath[MAX_PATH] = {0};
    GetSystemDirectory(szPath, MAX_PATH); //C:WINDOWSsystem32
    GetWindowsDirectory(szPath, MAX_PATH); //C:WINDOWS
    GetTempPath(MAX_PATH, szPath); //C:DOCUME~1SycLOCALS~1Temp
     
    ②、桌面目录、我的文档等目录的获取:
    超强目录获取函数:SHGetSpecialFolderPath,他是 shell api,具体解释见MSDN;
    //获取桌面路径:
    TCHAR szPath[MAX_PATH] = {0};
    SHGetSpecialFolderPath(m_hWnd, szPath, CSIDL_DESKTOP, FALSE);
    MessageBox(szPath);
     
    //获取我的文档路径:
    SHGetSpecialFolderPath(m_hWnd, szPath, CSIDL_PERSONAL, FALSE);
     
    其他 CSIDL 的值:
      CSIDL_FLAG_CREATE($8000)
        windows 2000:如果这个CSIDL所引用的文件夹不存在,则创建这个文件夹!.
       CSIDL_FLAG_DONT_VERIFY($4000)
        WINDOWS 2000: 无论这个CSIDL所引用的文件夹是否存在都使用它!
     
      CSIDL_ADMINTOOLS($30)
        表示当前用户的“管理工具”系统文件夹
      CSIDL_APPDATA($1A)
        表示当前用户的特定的应用程序数据存储文件夹,例如:C:Documents and SettingsusernameApplication Data
      CSIDL_BITBUCKET($A)
        表示回收站
      CSIDL_COMMON_ADMINTOOLS($2F)
        表示所有用户的“管理工具”系统文件夹
      CSIDL_COMMON_ALTSTARTUP($1D)
        表示所有用户的 (只支持WINDOWS NT 系统)
      CSIDL_COMMON_APPDATA($23)
        表示所有用户的特定的应用程序数据存储文件夹,例如:C:Documents and SettingsAll UsersApplication Data
      CSIDL_COMMON_DESKTOPDIRECTORY($19)
        表示所有用户的“桌面”文件夹,例如:C:Documents and SettingsAll UsersDesktop。
      CSIDL_COMMON_DOCUMENTS($2E)
        表示所有用户的“我的文档”文件夹,例如:C:Documents and SettingsAll UsersDocuments
      CSIDL_COMMON_FAVORITES($1F)
        表示所有用户的“我的收藏夹”文件夹。
      CSIDL_COMMON_PROGRAMS($17)
        表示所有用户的“程序”文件夹,例如:C:Documents and SettingsAll UsersStart MenuPrograms
      CSIDL_COMMON_STARTMENU($16)
        表示所有用户的“开始菜单”文件夹,例如:C:Documents and SettingsAll UsersStart Menu
      CSIDL_COMMON_STARTUP($18)
        表示所有用户的“启动”文件夹,例如:C:Documents and SettingsAll UsersStart MenuProgramsStartup
      CSIDL_COMMON_TEMPLATES($2D)
        表示所有用户的“模块”文件夹,例如:C:Documents and SettingsAll UsersTemplates
      CSIDL_CONTROLS($3)
        表示“控制面板”文件夹
      CSIDL_COOKIES($21)
        表示当前用户Internet Explorer的cookie 文件夹,例如:C:Documents and SettingsusernameCookies
      CSIDL_DESKTOP($0)
        表示“桌面”虚拟文件夹,包含了计算机中的所有内容
      CSIDL_DESKTOPDIRECTORY($10)
        表示当前用户的“桌面”文件夹,例如:C:Documents and SettingsusernameDesktop
      CSIDL_DRIVES($11)
        表示“我的电脑”虚拟文件夹,包含了计算机中所有的驱动器
      CSIDL_FAVORITES($6)
        表示当前用户的“收藏夹”文件夹,例如:C:Documents and SettingsusernameFavorites
      CSIDL_FONTS($14)
        表示“系统字体”文件夹,例如:C:WINNTFonts
      CSIDL_HISTORY($22)
        表示Inernet Explorer的“历史记录”文件夹
      CSIDL_INTERNET($1)
        表示Internet的这个虚拟文件夹
      CSIDL_INTERNET_CACHE($20)
        表示当前用户的Internet Explorer的"Cache"文件夹,例如:C:Documents and SettingsusernameTemporary Internet Files
      CSIDL_LOCAL_APPDATA($1C)
        表示当前用户的应用程序数据文件夹,例如:C:Documents and SettingsusernameLocal SettingsApplication Data
      CSIDL_MYMUSIC
        表示当前用户存储音乐文件的文件夹,例如:C:Documents and SettingsUserMy DocumentsMy Music
      CSIDL_MYPICTURES($27)
        表示当前用户存储图像文件的文件夹,例如:C:Documents and SettingsusernameMy DocumentsMy Pictures
      CSIDL_NETHOOD($13)
        表示当前用户存在的网络连接的文件夹,例如:C:Documents and SettingsusernameNetHood
      CSIDL_NETWORK($12)
        表示“网上邻居”这个虚拟文件夹
      CSIDL_PERSONAL($5)
        表示当前用户的“我的文档”文件夹,例如:C:Documents and SettingsusernameMy Documents
      CSIDL_PRINTERS($4)
        指向“打印机”这个虚拟文件夹
      CSIDL_PRINTHOOD($1B)
        表示当前用户存在的网络打印机的虚拟文件夹,例如:C:Documents and SettingsusernamePrintHood
      CSIDL_PROFILE($28)
        表示当前用用户配置文件的文件夹
      CSIDL_PROGRAM_FILES($26)
        表示程序文件的文件夹,例如:C:Program Files
      CSIDL_PROGRAM_FILES_COMMON($2B)
        表示系统程序共用组件文件夹,例如:C:Program FilesCommon
      CSIDL_PROGRAMS($2)
        表示当前用户的“程序”菜单文件夹,例如:C:Documents and SettingsusernameStart MenuPrograms
      CSIDL_RECENT($8)
        表示当前用户的“文档”菜单文件夹,例如:C:Documents and SettingsusernameStart MenuPrograms
      CSIDL_SENDTO($9)
        表示当前用户的“发送到”文件夹,例如:C:Documents and SettingsusernameSendTo
      CSIDL_STARTMENU($B)
        表示当前用户的“开始”菜单文件夹,例如:C:Documents and SettingsusernameStart Menu
      CSIDL_STARTUP($7)
        表示当前用户的“启动”菜单文件夹,例如:C:Documents and SettingsusernameStart MenuProgramsStartup
      CSIDL_SYSTEM($25)
        表示WINDOWS系统的系统文件夹,例如:C:WINNTSYSTEM32
      CSIDL_TEMPLATES($15)
        表示的是系统中存储文档模块的文件夹
      CSIDL_WINDOWS($24)
        表示的是系统中Windows目录的文件珍,例如:C:WINNT
     
    ③、应用程序当前目录的获取与设置及存在的问题讲解:
    获得当前进程的当前目录:GetCurrentDirectory
    设置当前进程的当前目录:SetCurrentDirectory
    ※※※ 注意:只是获取或者设置当前进程的当前目录,而并不是进程的镜像文件(.exe)所在的目录!
    所以,这里提醒大家,虽然在一般默认的情况下,当前exe所在目录与exe进程的当前目录相等,
    但是,最好不要使用 GetCurrentDirectory 函数来获取当前exe所在的目录,有潜在的问题,例如:
    TCHAR szPath[MAX_PATH] = {0};
    GetCurrentDirectory(MAX_PATH, szPath);
    MessageBox(szPath);
     
    CFileDialog dlg(FALSE);
    dlg.DoModal();
     
    GetCurrentDirectory(MAX_PATH, szPath);
    MessageBox(szPath);
     
    ④、可执行文件所在目录[包括EXE和DLL];
    DWORD GetCurrentFolder(DWORD nBufferLength, LPTSTR lpBuffer)
    {
     DWORD dwRet = 0;
     CString strPath;
     GetModuleFileName(AfxGetInstanceHandle(), strPath.GetBufferSetLength(MAX_PATH), MAX_PATH);
     strPath.ReleaseBuffer();
     
     int idx = strPath.ReverseFind('\');
     if (idx >= 0) {
      strPath = strPath.Left(idx);
     } else {
      return 0;
     }
     
     dwRet = strPath.GetLength();
     _tcsncpy_s(lpBuffer, nBufferLength, strPath, dwRet);
     dwRet = (nBufferLength >= dwRet) ? dwRet : nBufferLength;
     
     return dwRet;
    }
     
    ⑤、工程当前目录与Debug调试目录的不同:
    分别用 vc 启动程序和鼠标双击启动程序,观察调用 GetCurrentDirectory 函数获得结果的不同!
    所以:有的时候会提示找不到DLL之类的错误!
     
    ⑥⑦⑧⑨⑩
    系统信息的获取
        ①、当前用户名称、计算机名称的获取;
        ②、CPU、内存、硬盘信息的获取。
    ------------------------------------- End -------------------------------------------
  • 相关阅读:
    随意谈谈tcp
    %matplotlib inline 被注释掉后,pycharm不能生成图
    (转)SQL Server 2012 手动安装帮助文档+排错
    (转)线性回归数学推导(详细过程)
    numpy的函数使用
    SQL 测验题目(30道)
    SourceInsight 支持 Python
    (转)GitHub上想下载单个文件方法
    (转)SQL Server 数据类型映射
    数据库的基本使用(C#语言)
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243351.html
Copyright © 2011-2022 走看看