Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What does /ALLOWISOLATION:NO do?

131 views
Skip to first unread message

tomthe...@googlemail.com

unread,
May 9, 2008, 1:10:02 PM5/9/08
to
On XP, it doesn't seem to have any effect.

The doc says:

"When isolation is disabled for an executable, the Windows loader will
not attempt to find an application manifest for the newly created
process. The new process will not have a default activation context,
even if there is a manifest inside the executable or placed in the
same directory as the executable with name executable-
name.exe.manifest."

Note that I'm just trying to fully understand WinSxS and all the
options available, such as ISOLATION_AWARE_ENABLED. I'm not proposing
to actually use /ALLOWISOLATION:NO for anything - I just want to
understand what it is supposed to do.

I have an exe (test.exe) with no manifest and no vc8 runtime
dependency, which simply calls LoadLibrary on a test dll that has a
manifest under resource ID 2 and uses the VC8 runtime.

I run three tests:

1. Just run the exe. When LoadLibrary is called, the manifest in the
test DLL is read and the VC8 runtime ends up being loaded successfully
from winsxs.

2. Modify the LoadLibrary call in the exe so it loads
"msvcrt80.dll" (no path) directly, instead of my test dll. There is no
manifest, so the activation context does not provide any information
for msvcrt80.dll. winsxs is not searched and the LoadLibrary call
fails.

3. Add a manifest file (test.exe.manifest) into the same folder as
test.exe and repeat test 2. As there is now a manifest, msvcrt80.dll
is loaded successfully from winsxs.

I now set /ALLOWISOLATION:NO for test.exe and use dumpbin to make sure
the corresponding PE header flag
(IMAGE_DLLCHARACTERISTICS_NO_ISOLATION) has been set. I would expect
tests 1 and 2 to behave the same, but for test 3 to start failing.
However, I see no change at all in any of the three tests.

Any idea what's going on?

0 new messages