Oggi, dopo molto tempo, ho ripreso una applicazione che avevo sviluppato tempo fa con VS2003 e C# e che funzionava senza alcun problema. E' un semplicissimo keylogger e quindi si basa sul meccanismo degli hooks di sistema, nello specifico utilizza la funzione SetWindowsHookEx.
Passando a VS2005 e senza modificare nulla....mi è comparso un errore strano nella fase di run-time, quando l'applicazione cerca di installare l'hook nel sistema.
Il codice incriminato è il seguente :
// install Keyboard hook
if(hKeyboardHook == 0)
{
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD_LL,
KeyboardHookProcedure,
Marshal.GetHINSTANCE(
Assembly.GetExecutingAssembly().GetModules()[0]),
0);
//If SetWindowsHookEx fails.
if(hKeyboardHook == 0 ) {
Stop();
throw new Exception("SetWindowsHookEx ist failed.");
}
}
Su VS2003 questo codice gira senza problemi ma con VS2005 la funzione SetWindowsHookEx restituisce sempre 0, ovvero fallisce.
Come risolvere il problema?..Modifica del codice?..NOOO!!! 
Per risolvere basta :
Andare nelle proprietà del progetto, selezionare il tab Debug e levare il segno di spunta su "Enable the Visual Studio hosting process" che è attivo per default.
Ecco tutto!Spero vi possa aiutare...io ci ho perso non poco tempo! 