源码:

  1. #include <Shlobj.h>
  2. #include <stdio.h>
  3. #include <locale.h>
  4. int main()
  5. {
  6. setlocale(LC_ALL, "chs");
  7. TCHAR szPath[MAX_PATH];
  8. int CSIDL[] = {
  9. CSIDL_ADMINTOOLS,       CSIDL_APPDATA,  CSIDL_CDBURN_AREA,      CSIDL_COMMON_ADMINTOOLS,    CSIDL_COMMON_APPDATA,
  10. CSIDL_COMMON_DESKTOPDIRECTORY,          CSIDL_COMMON_DOCUMENTS, CSIDL_COMMON_FAVORITES,     CSIDL_COMMON_MUSIC,
  11. CSIDL_COMMON_PICTURES,  CSIDL_COMMON_PROGRAMS,  CSIDL_COMMON_STARTMENU, CSIDL_COMMON_STARTUP,
  12. CSIDL_COMMON_TEMPLATES, CSIDL_COMMON_VIDEO,     CSIDL_COOKIES,          CSIDL_FAVORITES,
  13. CSIDL_HISTORY,          CSIDL_INTERNET_CACHE,   CSIDL_LOCAL_APPDATA,    CSIDL_MYDOCUMENTS,
  14. CSIDL_MYMUSIC,          CSIDL_MYPICTURES,       CSIDL_MYVIDEO,          CSIDL_PROFILE,      CSIDL_PROGRAM_FILES,
  15. CSIDL_PROGRAM_FILES_COMMON,                     CSIDL_PROGRAMS,         CSIDL_RECENT,       CSIDL_SENDTO,
  16. CSIDL_STARTMENU,        CSIDL_STARTUP,          CSIDL_SYSTEM,           CSIDL_TEMPLATES,    CSIDL_WINDOWS,
  17. 0
  18. };
  19. for (int i=0;CSIDL[i];i++) {
  20. if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL[i], NULL, SHGFP_TYPE_CURRENT, szPath))) {
  21. wprintf(L"%d, %s\n", i, szPath);
  22. }
  23. }
  24. return 0;
  25. }

在XP上,用VS2010编译通过,假设是win7或者更高版本号,应该用

  1. HRESULT SHGetKnownFolderPath(
  2. _In_      REFKNOWNFOLDERID rfid,
  3. _In_      DWORD dwFlags,
  4. _In_opt_  HANDLE hToken,
  5. _Out_     PWSTR *ppszPath
  6. );

结果:

[plain] view
plain
copy

  1. 0, C:\Documents and Settings\Administrator\「開始」菜单\程序\管理工具
  2. 1, C:\Documents and Settings\Administrator\Application Data
  3. 2, C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\CD Burning
  4. 3, C:\Documents and Settings\All Users\「開始」菜单\程序\管理工具
  5. 4, C:\Documents and Settings\All Users\Application Data
  6. 5, C:\Documents and Settings\All Users\桌面
  7. 6, C:\Documents and Settings\All Users\Documents
  8. 7, C:\Documents and Settings\All Users\Favorites
  9. 8, C:\Documents and Settings\All Users\Documents\My Music
  10. 9, C:\Documents and Settings\All Users\Documents\My Pictures
  11. 10, C:\Documents and Settings\All Users\「開始」菜单\程序
  12. 11, C:\Documents and Settings\All Users\「開始」菜单
  13. 12, C:\Documents and Settings\All Users\「開始」菜单\程序\启动
  14. 13, C:\Documents and Settings\All Users\Templates
  15. 14, C:\Documents and Settings\All Users\Documents\My Videos
  16. 15, D:\My Documents\Cookies
  17. 16, D:\My Documents\Favorites
  18. 17, C:\Documents and Settings\Administrator\Local Settings\History
  19. 18, C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
  20. 19, C:\Documents and Settings\Administrator\Local Settings\Application Data
  21. 20, D:\My Documents
  22. 21, D:\My Documents\My Music
  23. 22, D:\My Documents\My Pictures
  24. 23, D:\My Documents\My Videos
  25. 24, C:\Documents and Settings\Administrator
  26. 25, C:\Program Files
  27. 26, C:\Program Files\Common Files
  28. 27, C:\Documents and Settings\Administrator\「開始」菜单\程序
  29. 28, C:\Documents and Settings\Administrator\Recent
  30. 29, C:\Documents and Settings\Administrator\SendTo
  31. 30, C:\Documents and Settings\Administrator\「開始」菜单
  32. 31, C:\Documents and Settings\Administrator\「開始」菜单\程序\启动
  33. 32, C:\WINDOWS\system32
  34. 33, C:\Documents and Settings\Administrator\Templates
  35. 34, C:\WINDOWS

C++获得系统路径的更多相关文章

  1. 获取当前应用的系统路径工具类和java的System.getProperty()方法介绍

    java的System.getProperty()方法可以获取的值,如下: 对于Java程序,无论是未打包的还是打包的JAR或WAR文件,有时候都需要获取它运行所在目录信息,如何做到这一点呢? /** ...

  2. 获取指定的系统路径 SHGetSpecialFolderPath

    1.获取桌面的系统路径 TCHAR szLink[MAX_PATH + ] = { }; SHGetSpecialFolderPath(,szLink,CSIDL_DESKTOPDIRECTORY,) ...

  3. Python3下获取WINDOWS下所有常用系统路径

    #codeing:utf-8import os #搞定WINDOWS下所有系统路径filename='c:\\WINDOWS_ALL_PATH.txt'f=open(filename,'w')i=1f ...

  4. C#读取“我的文档”等特殊系统路径及环境变量

    返回“我的文档”路径字符串 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 本技巧使用GetFolderPath方法来获取指 ...

  5. Linux - 系统路径加入命令

    系统路径加入命令 本文地址: http://blog.csdn.net/caroline_wendy 1. 在根文件夹建立bin文件夹: $mkdir bin 2. 改动".bash_pro ...

  6. Intellij IDEA 系统路径配置

    在使用IDEA启动Tomcat的时候,会读取系统路径,默认路径可能不是我们想要的,可以修改 C:\MyPrograms\IntelliJ IDEA 14.0.1\bin\idea.properties ...

  7. Pytest权威教程24-Pytest导入机制及系统路径

    目录 Pytest导入机制和sys.path/PYTHONPATH 包中的测试脚本及conftest.py文件 独立测试模块及conftest.py文件 调用通过python -m pytest调用p ...

  8. day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期

    复习 ''' 1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集 ...

  9. navicat 找不到系统路径 【修改了系统路径中文名称引起的】

    这是我还没修改系统路径中文名称时的路径, 怎么办? 关闭当前用户连接 右键,选择连接属性 把那个改了即可

  10. JAVA中获取不同系统的换行符和获取系统路径路径分割符

    简介 JAVA具有多平台特征,一次开发,多平台运行,主要依据JVM,但是不同的操作系统中换行符和分割符不同,故需要根据不同的操作系统去获取不同的符号. JAVA代码 @Test public void ...

随机推荐

  1. HTML5 Canvas Text文本居中实例

    1.代码: <canvas width="700" height="300" id="canvasOne" class="c ...

  2. this,super关键字的使用

    this关键字 1.this是对象的别名,是当前类的实例引用 2.在类的成员方法内部使用,代替当前类的实例.在Java中,本质上是指针,相当于C++中的指针概念.如果方法中的成员在调用前没有操作实例名 ...

  3. oracle 添加表分区

    alter table DF_WRITE_FILES_H add partition DF_WRITE_FILES_H96 values less than (201512) tablespace T ...

  4. mssql sql高效关联子查询的update 批量更新

    /* 使用带关联子查询的Update更新     --1.创建测试表 create TABLE Table1     (     a varchar(10),     b varchar(10),   ...

  5. UIView之常用属性

    UIView之常用属性 1. view.tag = 200; // 系统保留0-1002. view.frame = CGRectMake(20, 30, 300, 300);3. view.cent ...

  6. CSS 布局Float 【3】

    float 属性定义元素在哪个方向浮动. 浮动元素会生成一个块级框,而不论它本身是何种元素. 如果浮动非替换元素,则要指定一个明确的宽度:否则,它们会尽可能地窄. 注释:假如在一行之上只有极少的空间可 ...

  7. [个人原创]关于java中对象排序的一些探讨(一)

    有的时候我们需要将自己定义的对象,有序输出.因为一般我们程序的中间结果需要存储在容器里,那么怎样对容器中的对象按照一定次序输出就是程序员经常需要考虑的问题.本片文章探讨了怎样有序化输出容器中的对象的问 ...

  8. 浅谈C++ 异常处理的语义和性能

    异常处理是个十分深奥的主题,这里只是浅论其对C++性能的影响. 在VC++中,有多个异常处理模式,三个最重要: No exception handling (无异常处理) C++ only (C++语 ...

  9. 【USACO 2.2.1】序言页码

    [题目描述] 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数值,以下是标准数字表: I 1 L 50 M 1000 V 5 C 100 X 10 D 500 最多3个同样的可以表 ...

  10. 理解java中的ThreadLocal(转)

    一.对ThreadLocal概述 JDK API 写道: 该类提供了线程局部 (thread-local) 变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的 ...