In version 4.0.3: Settting the winscp403.ini file as read-only issues a message box about "writting" error upon exit. Setting the file as hidden works fine.
In version 4.0.5: Settting the winscp403.ini file as read-only and/or hidden issues several message boxes about "creating" error. Twice upon startup, once upon exit.
Setting the file as hidden should not prevent the write operation. Hidden configs are useful for portable users to hide "unimportant" files on usb. In terms of WinAPI, this can be done by specifying hidden attribute in the call to CreateFile. As it is described in the remarks section of the SDK, in order to preserve file attributes, you need to do something like this:
dwAttribs = GetFileAttributes (szFileName);
CreateFile (szFileName, ..., dwAttribs, ...);
Also, I would like to request the error messages upon read-only to be removed (at least by an option). Especially, when no change is made. Setting a config file as read-only does not earn an error. Disk full earns an error though. Furthermore, running WinSCP from a read-only network drive with ini file present always results in three unwanted errors, which gets annoying.. :))