bcdedit.exe refuses to open system store

Looks like OS X makes some changes that are incompatible and break bcdedit. Here's how I was able to temporarily fix this issue: reset NVRAM with +Alt+P+R, then boot directly into windows partition by holding Alt. I was able to install windows updates but after I booted into OS X and installed updates, bcdedit became broken again.


One situation in which the system will boot but bcdedit /enum will fail is if the EFI boot partition has the wrong partition type. As a side note, this may also cause reagentc /enable to fail and may additionally prevent Windows updates from installing successfully.

You can check whether this is your problem with the diskpart command. Assuming you have only one hard disk drive,

select disk 0
list partition

You should see something like this:

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    System             500 MB  1024 KB
  Partition 2    Primary            445 GB   501 MB

(There may or may not be a third "Recovery" partition as well.)

The smaller partition named "System" is the one you want, usually partition 1, so

select partition 1
detail partition

And you should see something like this

Partition 1
Type    : c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Hidden  : Yes
Required: No
Attrib  : 0XC000000000000000
Offset in Bytes: 1048576

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
* Volume 3                      FAT32  Partition    500 MB  Healthy    System

If the file system is not FAT32 then you are not looking at the right partition. It should also be Hidden, and will not usually have a drive letter assigned unless (as in the originally posted question) it has been explicitly given one for troubleshooting purposes. It might not be exactly 500MB, but should only be taking up a small fraction of the hard disk.

The type of the EFI partition should be c12a7328-f81f-11d2-ba4b-00a0c93ec93b as shown above. If it is not, and in particular if it is ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 (see Microsoft Basic Data Partition on Wikipedia) then that is likely to be the cause of the problem.

Addendum: if the current type of the partition is 07 or any two hexadecimal digits, the disk is partitioned in MBR mode rather than EFI mode and this answer is inapplicable.

If the partition type is incorrect, you can fix this with the set id command,

set id=c12a7328-f81f-11d2-ba4b-00a0c93ec93b

The bcdedit /enum command should then work.