我正在尝试获取本地“程序文件”目录路径并为其附加一些额外的路径并简单地执行它。不能让它正常工作。。
这是我当前的代码:
wchar_t* localAppData = 0;
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, 0, NULL, &localAppData);
wstringstream ss;
ss << localAppData << L"/MyApp/MyExe.exe";
CreateProcess(static_cast<void*>(localAppData));
我为 SHGetFolderPath 得到了这个:
cannot convert parameter 5 from wchar_t ** to LPWSTR
此外,即使我在标题中包含了 sstream,我也会收到以下错误:
'wstringstream' : undeclared identifier
注意:我正在使用 SHGetFolderPath 因为我需要它才能在 XP 和 Vista/7 上工作
编辑:
上面的代码有一个错误,我试图运行localAppData
“程序文件”目录的路径,而不是运行整个路径。
但是当我尝试在函数中使用ss
var 而不是localAppData
var 时CreateProcess
,我收到关于使用错误类型的 var 的错误(需要使用 LPCWSTR)。
但是当我尝试这个时,效果不佳..没有错误但应用程序没有运行,我错过了什么?
wchar_t localAppData[MAX_PATH];
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILESX86, 0, NULL, localAppData);
std::wstringstream ss;
ss << localAppData << L"/MyApp/MyExe.exe";
LPCWSTR str = ss.str().c_str();
CreateProcess(str, NULL,NULL, NULL,FALSE,NULL,NULL,NULL,&sInfo,&pInfo);
return str;
有任何想法吗?