TCHAR или любой строковый массив - это просто указатель на первый символ.То, что вы сравниваете, это значение указателя, а не строки.Кроме того, вы присваиваете массиву значение null, что является бессмысленным.
Используйте win32 варианты strcmp .Если вы используете макрос _tcscmp, он будет использовать правильную функцию для многобайтовой / unicode во время компиляции.
#define MAX_STRING 16523;
TCHAR achValue[MAX_STRING];
ZeroMemory(achValue, sizeof(TCHAR) * MAX_STRING);
sprintf(achValue, MAX_PATH, _T("NDSPATH"));
if (!_tcscmp(achValue, _T("NDSPATH"))
{
// strings are equal when result is 0
}