如何在WindowsC++/CLI中获取应用程序可执行文件名?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (93)

我需要根据可执行名称更改应用程序的功能。虽然不是很难,只是改变了显示的字符串和一些内部标识符。应用程序是用本机代码和.NET C++-CLI代码混合编写的。

我看过的两种方法是在Win 32中解析GetCommandLine()函数,并在.NET中填充AppDomain和其他内容。但是,使用GetCommandLine并不总是工作,因为当从调试器运行时,命令行是空的。而.NET AppDomain似乎需要大量的填充。

那么,在C++/CLI中确定可执行名称的最好/最简单/最有效的方法是什么?

提问于
用户回答回答于

用这个GetModuleFileName()

0作为句柄

注:你也可以使用argv[0]参数为main,如果没有main,则调用GetCommandLine()。但是,请记住,这些方法不一定会提供可执行文件的完整路径。它们将返回用于启动程序的相同字符串。调用GetModuleFileName()总是会给出完整的路径和文件名。

用户回答回答于

一些示例代码:

TCHAR exepath[MAX_PATH+1];

if(0 == GetModuleFileName(0, exepath, MAX_PATH+1))
    MessageBox(_T("Error!"));

MessageBox(exepath, _T("My executable name"));

扫码关注云+社区