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

所有用户路径?

  •  4
  • Kyle  · 技术社区  · 15 年前

    在C中,我可以执行以下操作:

    DirectoryInfo di = new DirectoryInfo(System.Environment.GetEnvironmentVariable("ALLUSERSPROFILE"));
    

    这将为我提供所有用户配置文件的路径。

    在C++中,我可以使用SHIGTFULDDROW路径,但是对于所有的用户来说,它似乎没有CSLID。 是否有一个equalivant函数可以将%allusersprofile%吹到它的路径值?

    5 回复  |  直到 15 年前
        1
  •  3
  •   Jeff Yates    15 年前

    使用 ExpandEnvironmentStrings 扩大 %ALLUSERSPROFILE% 字符串。此方法是 Kernel32.dll .

        2
  •  10
  •   Deanna superuser    12 年前

    使用 SHGetFolderPath 具有 CSIDL_COMMON_APPDATA . 或 SHGetKnownFolderPath 从Vista开始 FOLDERID_ProgramData .

    或者,使用.NET本机 Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

        3
  •  1
  •   Josh Kelley    15 年前

    在大多数情况下,您应该能够使用 SHGetFolderPath 其中之一 CSIDL_COMMON_... 值(见) here 获取您感兴趣的所有用户路径的子目录。(对于Windows Vista及更高版本,您可以使用 SHGetKnownFolderPath 其中之一 FOLDERID_Public... 价值观; here )

        4
  •  1
  •   Stu    15 年前

    请注意,在某些安全情况下,该文件夹甚至可能不是真正的文件夹。没有一个CSIDL_uuu,因为它总是一个强烈的暗示,那就是你已经偏离了被打败的道路。

    你确定你在使用AppData方面不是很好吗?

        5
  •  0
  •   Rob    15 年前

    你可以用 getenv crt函数以与c相同的方式获取allusersprofile环境变量的值。