shellexec和c:\ program files - x86和x64可移植性

时间:2010-11-01 17:27:42

标签: c windows

我正在修改一个开源GUI(用c编写),以便向托盘应用添加新的菜单项。新的菜单项在c:\ program files目录中的程序根目录中执行文件(update.exe)。我使用shellexec(),它在x86上工作正常,但由于x64 - c:\ program files(x86)上的路径不同,因此无法加载。我想使用像%programfiles%这样的环境变量的效果。什么是优雅的解决方案?

或者,我可以更改update.exe文件的存储位置。把它放在'程序文件'中似乎是最合乎逻辑的。对于上面的问题,它应该超出程序文件吗?如果是这样的话?

1 个答案:

答案 0 :(得分:1)

您可以使用GetModuleFileName()检索可执行文件的完整路径。然后你只需要从最后剪切文件名,你将拥有完整的目录路径。

这样的事情应该是诀窍:

TCHAR szPath[MAX_PATH];
LPTSTR szFileName;

GetModuleFileName(g_hInstance, szPath, sizeof(szPath)/sizeof(TCHAR));
szFileName = _tcsrchr(szPath, TEXT("\\"));
*szFileName = TEXT('\0');

// szPath now contains the path

(警告!未经测试!)