代码之家  ›  专栏  ›  技术社区  ›  jmatthias

为什么我找不到CIDLLX配置文件的定义?

  •  1
  • jmatthias  · 技术社区  · 15 年前

    我想用 ShGetFolderPath 以确定用户配置文件文件夹的路径。文档说明csidl_配置文件定义了此文件夹:

    CSIDL U配置文件(0x003E)

    版本6.0。包含用户配置文件文件夹的文件系统目录。典型的路径是C:\文档和设置。

    我正在使用visualstudio2005sp1,找不到常量的定义 CSIDL_PROFILES 在平台sdk中包含文件?我需要新版本的平台sdk吗?

    所以我做了更多的实验,使用id 0x3e代替符号。但是,对于接受csidl参数的shell函数,0x3e似乎不是有效的参数(返回无效的参数错误)。

    所以我猜csidl_profiles不是一个有效的参数,而且至少有一些关于这个主题的msdn页面在提到这个符号时是不正确的。我不得不说,在我使用Win32/MSDN文档的所有年份中,我都记不起类似的情况。

    3 回复  |  直到 9 年前
        1
  •  0
  •   Roddy    15 年前

    它是 列在 MSDN documentation for CSIDLs ,因此更新版本的psdk不太可能帮助您。

    你显然可以自己做:

    #define CSIDL_PROFILES 0x003E
    

    …但考虑到它看起来完全没有被ms记录,我不建议这么做。

        2
  •  0
  •   MSalters    15 年前

    我会说,当有人注意到它是没有价值的时候,它就被删除了。你到底能做什么?您仍然需要确定每个用户的配置文件是否实际存在于该目录下。但是,由于您通常是按用户检查此项,因此需要默认设置的唯一一点是在创建新的用户配置文件时。这就是windows的内部代码。

        3
  •  0
  •   Community CDub    8 年前

    你应该用 GetProfilesDirectory() 但如果您真正想要的是不同用户的csidl,则应该使用其令牌调用shgetfolderpath。(如果你没有他们的代币,你需要使用 a hacky workaround )