it is necessary to use window functions,
Nope. Not if your test signal generator uses the same clock that drives your A/D converter. You just have to make sure that your frequencies have an integer number of period inside the analysis window.
Let's say you acquire about 1s worth of data at 192kHz. If you use an analysis window of $2^{18}$ that gives about 1.4 s of data at a frequency resolution of about 0.73Hz. You won't be able to make EXACTLY 1000Hz but FFT bin 1365 is at 999.76Hz which is probably close enough.
By working in FFT bins instead of absolute frequencies you eliminate the need for the window and you turn this into nice and simple integer problem. 990 Hz becomes bin 1352 and 1010Hz becomes bin 1379 end so your first intermod products will show up at bin 2731 and 27. Provided the amount of non-linear distortion is reasonably small you can get magnitude and phase of the fundamental, the harmonics and the intermod products directly from the FFT coefficient at that bin.
In the case of tones around 1 KHz, tones will be created at frequencies: 970, 950, 930, ... Hz and 1030, 1050, 1070, ... Hz,
I think I'm missing something here. When you feed two tones into a system with moderate non-linearity you will get frequency components at
$$f_{m,n} = m\cdot f_1 + n \cdot f_2, \qquad m,n\in \mathbb{Z}$$
where $f_{1,0}$ and $f_{0,1}$ are the fundamentals and $f_{m,0}$ and $f_{0,n}$ the harmonics. For 990 and 1010 and I would expect the first intermod products at 20 and 2000. I don't quite see how you would get anything at 950?