C++;:如何转换%;USERPROFILE%路径到文件路径(应适用于Windows XP及更高版本) 如何将%UrrStices %PATH转换成C++文件路径?它应该适用于Windows XP和更高版本。 我需要它,因为当我试图使用javaw.exe使用CreateProcessW方法启动.jar文件时,找不到该文件。
您可以使用一个扩展环境变量的函数。例如C++;:如何转换%;USERPROFILE%路径到文件路径(应适用于Windows XP及更高版本) 如何将%UrrStices %PATH转换成C++文件路径?它应该适用于Windows XP和更高版本。 我需要它,因为当我试图使用javaw.exe使用CreateProcessW方法启动.jar文件时,找不到该文件。,c++,windows,C++,Windows,您可以使用一个扩展环境变量的函数。例如getenv,或者在Windows上,您可以选择使用GetEnvironmentVariable 但是,找到用户配置文件目录的正确方法是使用Windows API。如果您需要支持XP,则需要对该文件夹使用CSIDL:。用于读取与特定CSIDL值关联的路径 这就是获取用户配置文件目录的方法,尽管我必须承认,我很难理解这将如何帮助您启动javaw.exe 更新 在注释中,您指出您实际上需要临时目录。使用GetTempPath来获得它。我必须获得临时目录的完整路径
getenv
,或者在Windows上,您可以选择使用GetEnvironmentVariable
但是,找到用户配置文件目录的正确方法是使用Windows API。如果您需要支持XP,则需要对该文件夹使用CSIDL:。用于读取与特定CSIDL值关联的路径
这就是获取用户配置文件目录的方法,尽管我必须承认,我很难理解这将如何帮助您启动javaw.exe
更新
在注释中,您指出您实际上需要临时目录。使用
GetTempPath
来获得它。我必须获得临时目录的完整路径。我已经阅读了注册表项HKEY\u CURRENT\u USER\\Environment
TEMP
,但是该值包含%USERPROFILE%,这给javaw.exe带来了问题-它不知道什么是%USERPROFILE%。如果您想要用户临时目录路径,那么GetTempPath
可能会有帮助。目前我正在使用注册表中的值,但是使用CSIDL\u PROFILE
标志将%USERPROFILE%替换为SHGetFolderPathW
。也许GetTempPath
更好。真的谢谢你的帮助:)好吧,你现在所做的是完全错误的。您必须使用GetTempPath.mableeduplicate或mableeduplicate,但对我来说没有好的答案。SHGetFolderPathW
方法没有任何内容。由SHGetFolderPath
返回的文件夹与环境变量无关。随着它们的扩展,情况就更糟了。