For Java 6+ and Java 5u11+, when running on Vista, the deployment home directory (where cache, log, etc is located) will now be under the user's appdata/locallow directory:
This directory can be written by both Java Plug-in and Java Web Start, without any redirection, even under IE protected mode.
We obtain the path to the user's locallow directory using windows API:
SHGetFolderPathEx with argument FOLDERID_LocalAppDataLow
I tried to move the deployment infrastructure directory to the "low" directory as returned by SHGetFolderPathEx function (with FOLDERID_LocalAppDataLow as argument).
But even this path, when in IE protected mode, it still got redirected to another virtualized directory.
I found that if we set the deployment infrastructure directory to:
c:\Users\ngthomas\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized
Then both webstart and plugin cache can co-exists there; no re-direction even in protected mode.
But I couldn't find a win api that will returned this path yet; and i am not sure if this will works in all different editions of Vista.
More investigation is needed. Another possible approach is to elevate plugin to run in "intermediate" or "high" mode, same as webstart.