Allow me to summarize to make sure I understand this correctly: If you attempt to use your icon to call the SUD which starts the DIAdem script when DIAdem is not open it hangs when DIAdem attempts to register gfsodbc.dll. Once this fails, you are unable to load DIAdem until you start a different version of DIAdem.
It sounds like the underlying issue is that DIAdem is failing to register the gfsodbc.dll. Once this is not registering correctly, it appears to be preventing you from starting DIAdem until this DLL is appropriately terminated.
Are you using ODBC connections in your SUD or your script? If not, you should be able to turn off whether the gfsodbc dll registers when you start DIAdem by following the steps in this KB. The KB will show you how to add a DLL, but you can remove them from there as well.
If you receive this error, you could also try manually unregistering the DLL using "regsvr32 /u <location>gfsodbc.dll" where <location> is the directory location of the dll and then try reloading DIAdem.
Let me know if this helps.
Since I don't know German, I have been using a translator. The error message you were receiving above translates as LoadLibrary failed - the indicated module was not found. This makes me think that when you tried to unregister the DLL, you entered the wrong directory (possibly through a typo) or the DLL doesn't exist. Since the DLL exists on your system, then the location of the DLL must have been specified incorrectly for that error (or I am interpreting it incorrectly). I would try navigating to that DLL through windows explorer and copying the directory path from the path bar. Then paste that path when you unregister the DLL and try the command out again.
Again, I'm not sure if unregistering the DLL after this issue arises will solve the problem; however, it would be something to try.