**Workaround 2:**Whitelisting.
Only if you trust the application that it is always digitally signed and doesn't contain anything malicious(even in the future).
Step 1: Enable Whitelisting
Under Key “HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer”, create a DWORD: “SecureRepairPolicy” and set its Value to 2.
Step 2: Add the application to the whitelist
Create a new key “SecureRepairWhitelist” under "HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer” and create StringValues with the product codes(Including flower brackets {}) of the product.
Sadly though, both these workarounds need admin privileges!
I had previously been blocked from installing the Java JDK, with the "SECREPAIR: Crypt Provider not initialized. Error:997" error (I/O overlap message shown).
I tried this (registry fix, listed above) with the Java SE Development Kit 7 Update 71 (64-bit) installer, and it worked. The GUID that I included in the registry was the same one that it had been generating as "SourceHash{64A3A4F4-B792-11D6-A78A-00B0D0170710}" in the C:\Windows\Installer folder.
Other background:-
- restoring to a restore point before the updates installed didn't work
- uninstalling the KB2918614 fix via "Installed Updates" also didn't work -- and, as mentioned by others, even after KB2918614 was uninstalled, the SourceHash{GUID} files are still generated during installation of (some?) MSIs.
- I deleted my C:\Users\CScholt\AppData\Roaming\Microsoft\Crypto\RSA folder (wisdom would suggest perhaps renaming, or movingit elsewhere instead, though).
- I had installed the MS Hotfix KB3000988 (and that itself didn't help -- after installing that, I still couldn't complete the JDK installation... it was the registry mod that 'fixed' it).
Thank you for sharing.