John Fredman
2007-06-14 14:46:02 UTC
Hi,
We're developing an ActiveX control which is running in Windows Vista
Internet Explorer 7.0. The ActiveX control will occationally save files
outside of low integrity locations when in Protected Mode, and therefore we
followed the suggestions described for working with IE in Protected Mode
(described at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/IETechCol/dnwebgen/ProtectedMode.asp).
So now when a file shall be saved the following is performed (if in Protected
Mode):
1. Retrieve a path to a temporary low integrity path by calling
"IEGetWriteableFolderPath(FOLDERID_InternetCache, &aTempPath);", and then
save the file there.
2. Call "IEShowSaveFileDialog(..., &hState);" to let the user select the
final destination path.
3. Call "IESaveFile(hState, aTempPath);" to move the file from the temporary
path to the path selected by the user.
Everything works ok, except that when the operation is completed (i.e. when
step 1-3 has been completed) the user broker process (ieuser.exe) holds a
lock on the destination directory selected in step 2 above and therefore it
is not possible to delete this directory. We have verified that it's the
"ieuser.exe" process that holds the lock using the program Process Explorer
for Windows (see
http://www.microsoft.com/technet/sysinternals/utilities/ProcessExplorer.mspx).
Now we wonder if this is a bug, or if there is some way to solve this
problem? Surely, it cannot be intended that IE should keep a lock on the
destination directory after step 3 has been completed?
Thanks in advance.
Best regards,
John Fredman
We're developing an ActiveX control which is running in Windows Vista
Internet Explorer 7.0. The ActiveX control will occationally save files
outside of low integrity locations when in Protected Mode, and therefore we
followed the suggestions described for working with IE in Protected Mode
(described at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/IETechCol/dnwebgen/ProtectedMode.asp).
So now when a file shall be saved the following is performed (if in Protected
Mode):
1. Retrieve a path to a temporary low integrity path by calling
"IEGetWriteableFolderPath(FOLDERID_InternetCache, &aTempPath);", and then
save the file there.
2. Call "IEShowSaveFileDialog(..., &hState);" to let the user select the
final destination path.
3. Call "IESaveFile(hState, aTempPath);" to move the file from the temporary
path to the path selected by the user.
Everything works ok, except that when the operation is completed (i.e. when
step 1-3 has been completed) the user broker process (ieuser.exe) holds a
lock on the destination directory selected in step 2 above and therefore it
is not possible to delete this directory. We have verified that it's the
"ieuser.exe" process that holds the lock using the program Process Explorer
for Windows (see
http://www.microsoft.com/technet/sysinternals/utilities/ProcessExplorer.mspx).
Now we wonder if this is a bug, or if there is some way to solve this
problem? Surely, it cannot be intended that IE should keep a lock on the
destination directory after step 3 has been completed?
Thanks in advance.
Best regards,
John Fredman