strlen((char*)szPath2)+1
Это наиболее вероятно, где ваша проблема.Бьюсь об заклад, ваша программа составлена в режиме UNICODE.strlen
работает правильно только для строк ASCII.(Тот факт, что вам приходится приводить из TCHAR в char, является большим намеком на то, что что-то не так.)
Чтобы быть совместимым с использованием TCHAR и т.п., вам, вероятно, следует использовать _tcslen
вместо этого.