Если под «только C ++» вы имеете в виду, не используя Windows API, я не думаю, что в стандартной библиотеке есть функция для этого.
Если вы можете вызвать Win32 API, вам просто нужно вызватьGetModuleFileName()
с NULL в качестве первого параметра, и вы получите путь к текущему исполняемому файлу.
Теперь проблема в том, что мы запускаем .CAB, что такое исполняемый файл?Установочная DLL, извлеченная из .CAB, или компонента оболочки, на котором выполняется .CAB?
Вы также можете попробовать GetCommandLine()
, поскольку первая запись должна быть путем / именем исполняемого файла (на самом деле этострока передана в CreateProcess()
, поэтому вы не можете быть на 100% уверены в этом).