I can confirm this bug, it has been bothering me for quite a while as well. I've done some basic investigation of the causes of it.
Firstly, next to numerous floating point exceptions nothing serious shows up in a debugging tool. When running FlashFXP under a debugger the problem does not occur either, I'm perfectly able to copy files to- and from the desktop, even when I run the program as the user "Peter". Running the process in a debugger obviously increases the process' rights, so that got me to think about the new Vista/7 security model.
One thing that might be a cause for this, referring to the earlier comment pointing out that the desktop had several directories that could be used, is that the file might indeed be created in the wrong directory. The Windows API has a special function to figure out the Desktop's absolute directory path:
SHGetSpecialFolderLocation. I'm unaware of FlashFXP's directory browsing implementation, but it might be an option worthy to look at.
Code:
LPITEMIDLIST pidl;
char szDesktopPath [_MAX_PATH];
LPITEMIDLIST pidl;
SHGetSpecialFolderLocation (hWnd, CSIDL_DESKTOPDIRECTORY, &pidl);
if (SHGetPathFromIDList (pidl, szDesktopPath))
{
// absolute desktop path now is in szDesktopPath
}
My guess would be that Vista doesn't give the CreateFile call enough privileges to read- or write anything on the user's Desktop. FlashFXP closing suddenly makes me think that the file pointer is being used without a check to see whether it's valid (thus creating an exception, unhandled - program shutdown). A temporary fix for this, either to add debugging information or to stop FlashFXP from shutting down when this occurs, would be to check the file pointer after the fopen/CreateFile/whatever opening function you use and check whether the handle it valid. If it's not, this bug gets triggered. My suggestion would be to display an error box, possibly including the result from the GetLastError syscall.
I'm not fully aware of FlashFXP's ELUA in terms of using debugging programs to search for problems, please excuse me if I violated anything. I'm not doing this for any personal gains or benefit, it's simply a bug which I think is quite annoying.