With Process Monitor I found that, right before trying to access the path, a DLL is used to retrieve this path. The following may be borderline legal, but I'd like to share my findings anyway.
The DLL is located at C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Build.Tasks.v4.0.dll
and the class being used is Microsoft.Build.Tasks.Deployment.Bootstrapper.BootstrapperBuilder
. Using your favourite disassembly tool, you can find that ultimately three attempts are made at retrieving the path.
- HKLMSoftwareMicrosoftGenericBootstrapper11.0Path
- HKLMSoftwareWow6432NodeMicrosoftGenericBootstrapper11.0Path
- Environment.CurrentDirectory
I'm unsure why it says 11.0, as far as I can remember VS 2012 has not been installed on this machine before.
So there's a bug in the SDK installer or there's a bug in the DLL. Either way, creating the 11.0 registry key and adding the value resolves this issue. Note: Visual Studio must be restarted, because after attempting to retrieve the path, it is cached.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftGenericBootstrapper11.0]
"Path"="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper"
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftGenericBootstrapper11.0]
"Path"="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper"
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…