Can't access Win7 BCD

paul1149

Distinguished Member
Hi,

This is a continuation of the problem I aired at Win7's msconfig/boot dead, but I thought it would be much clearer to start over and be more concise.

I have a Win7 machine, on which I have configured a simple boot menu that adds some Win7 Safe Mode options. I am booting up fine.

The problem is that EasyBCD cannot access the BCD store in the 200mb system reserve partition unless I first unhide that partition. Then I have full access. I know I'm dealing with the operative BCD because I shortened the boot menu delay to six seconds this way.

But as soon as I re-hide the system partition and reboot, Easy again cannot access the BCD.

I used Easy to "change" the boot drive - really, to reset the system reserve partition as active, which it already was. In explorer I adjusted the BCD file's security settings to allow any user modification rights, even though I'm an admin. I have opened Easy as "run as Admin". None of that did any good.

I'm stumped at this point. Any insight would be most appreciated.

p.
 
Last edited:
A good start would be to post the contents of

a) EasyBCD | Power Console | "bcdedit.exe" *with the partition hidden*
b) EasyBCD | Detailed Mode *with the partition visible*
 
Here's the attempt with the part. hid:

C:\systools\EasyBCD\bin>bcdedit.exe
The boot configuration data store could not be
The system cannot find the file specified.

And here's the read out with it revealed. Thanks.
p.


Windows Boot Manager
--------------------
identifier {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device boot
description Windows Boot Manager
locale en-US
inherit {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default {7d7b06f1-5402-11df-a7e4-00235a6a295e}
resumeobject {7d7b06f0-5402-11df-a7e4-00235a6a295e}
displayorder {7d7b06f1-5402-11df-a7e4-00235a6a295e}
{7d7b06fa-5402-11df-a7e4-00235a6a295e}
{7d7b06fb-5402-11df-a7e4-00235a6a295e}
{7d7b06fc-5402-11df-a7e4-00235a6a295e}
toolsdisplayorder {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout 6
displaybootmenu Yes

Windows Boot Loader
-------------------
identifier {7d7b06f1-5402-11df-a7e4-00235a6a295e}
device partition=C:
path \windows\system32\winload.exe
description Windows 7
locale en-US
inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence {7d7b06f2-5402-11df-a7e4-00235a6a295e}
recoveryenabled Yes
osdevice partition=C:
systemroot \windows
resumeobject {7d7b06f0-5402-11df-a7e4-00235a6a295e}
nx OptIn
quietboot No
safebootalternateshell No
bootlog Yes

Windows Boot Loader
-------------------
identifier {7d7b06fa-5402-11df-a7e4-00235a6a295e}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7 Safe Mode
locale en-US
osdevice partition=C:
systemroot \Windows
resumeobject {19bd0555-0306-11e0-998b-806e6f6e6963}
nx OptIn
pae Default
safeboot Minimal
sos No
debug No

Windows Boot Loader
-------------------
identifier {7d7b06fb-5402-11df-a7e4-00235a6a295e}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7 Safe Mode with Networking
locale en-US
osdevice partition=C:
systemroot \Windows
resumeobject {e73f7ad4-040a-11e0-9975-806e6f6e6963}
nx OptIn
pae Default
safeboot Network
sos No
debug No

Windows Boot Loader
-------------------
identifier {7d7b06fc-5402-11df-a7e4-00235a6a295e}
device partition=C:
path \Windows\system32\winload.exe
description Windows 7 with basic VGA
locale en-US
osdevice partition=C:
systemroot \Windows
resumeobject {7dc9f155-040c-11e0-9da1-806e6f6e6963}
nx OptIn
pae Default
vga Yes
sos No
debug No
 
Well, as you can see, it's (like I've mentioned before) a bug in Windows where bcdedit itself doesn't know where the BCD is.

Try running this in the EasyBCD power console with the partition unhidden:

bcdedit /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partition=X:

Where X is the letter of the usually hidden boot partition.
 
Here's the copy from the window:

C:\systools\EasyBCD\bin>bcdedit /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partiti
on=M
An error has occurred setting the element data.
The request is not supported.

If it's a Windows bug that I can't do anything about, then I guess I'll just leave it, though I'd like to correct it. I thought something had been done wrong that should be rectified.

Thanks,
p.
 
Ok, sorry about that. I made the correction, and it applied successfully. I re-hid the partition and then rebooted and tried Easy again, and unfortunately it still can't access the BCD. Frustrating, but I'm out of ideas.

Thanks,
p.

Addendum:

Wow, I may have found the answer. Nothing was working and I was giving up. But then I fired up Partition Wizard, and noticed that there was a function - hide/unhide - separate from removing the drive letter. Using Hide, the partition's status is listed as Active and Hidden.

I had assumed that removing the drive letter and hiding the partition were both the same thing. But I found in a thread from the Easeus forum:

If you don't want others to use one partition, just 'Hide' is enough. If you have important data on the partition, and fear with virus, etc, you can set it as 'None', so that nothing can access it, for there is no path anymore.​

So my theory is that removing the drive label rendered the partition impenetrable to the OS. It wasn't a problem to the BIOS on the boot-up, however.

Am I correct on this? Because it would explain the behavior here perfectly. After I hid the system reserve partition, Easy had zero problem loading the BCD, even before a reboot.

One thing I still don't understand is that in Win7 Disk Management all the options and properties for the system reserve partition are grayed out. There is no way there to unhide, or do anything else to, that partition there. I would have to go to a third party tool such as PW to make changes. That's not a problem, it's just that I don't understand the rationale. Maybe Windows merely is trying to make hidden OEM partitions harder for Joe User to get into.

One other unexplained thing. When I Hid the parition the letter I had assigned it became available again. So the OS is accessing the partition by some other means.

I'll let you know if there's any change, but I think this problem is nailed. MSCONFIG's Boot tab is live again too.

Praise the Lord!

Addendum:

Hot dang. I've got my hibernation back again too! YEAH!
 
Last edited:
Hmm. I have no idea what the Easus definition of "hide" is, but that's certainly interesting.

Glad you got it working; I really should look into this.
 
One more thing - this also repaired the sluggish booting I was experiencing. I don't know why that would be. Once the BCD gives its instructions its job is done, right? But it definitely cleared up this problem that started along with the others.
 
Disk letters are just a Windows construct (or DOS originally). They are an internal, virtual map of drives.
The "hide" bit is part of the MBR architecture and exists physically on the HDD regardless of the OS ultimately in use.
Windows obeys the MBR architecture and acknowledges the status of the MBR bit, but the Windows bootloaders have never been designed to manipulate it.
If you look at the way HnS . works you'll see it uses grub (which can manipulate the hide bit), but it affects Windows in which hidden drives appear to have no letters, even though those letters have been set in the OS before the drives were hidden.
Removing a disk letter appears to have the same effect once the OS is up and running, but obviously can't affect code which executes before the OS has started.
 
Last edited:
That's basically what I was thinking concerning the MBR not being dependent on the OS's labeling, but it was much more articulate than I was able to come up with.

Windows in which hidden drives appear to have no letters, even though those letters have been set in the OS before the drives were hidden.

That sounds plausible, but the fact is that when I Hid that partition, the letter I had assigned to it became available in Partition Wizard for assignment to other drives. Unless PW has a bug in this regard, it seems that the letter was indeed abandoned, and the OS wholly reverted to accessing the partition by its ID number, I suppose.
 
No, it's still in the registry, with the assigned letter attached to that ID. It's just not mounted.
All of my flashdrives, camera, ext HDD, etc have an assigned letter (identical across all 3 Windows), but those letters will show as "available for use" in Windows if the flashdrive/camera/etc is not plugged into a USB port. The moment it's plugged in, it's instantly recognized as the correct letter, which then becomes unavailable to anything else.
 
Interesting. That explains why I frequently play musical drive letters regarding external drives, which is a concern with daily backups. But to make a hidden drive's letter available for reuse seems to me to be a recipe for chaos, if that letter were still used for mapping.
 
It's up to you as the end-user how you want to play it.
The default is similar to W9x. If you don't manually allocate letters, the OS dynamically associates them at boot and you tend to get 1st HDD - C, second HDD - D, CD-ROM E, etc etc which seems consistent from boot to boot simply because the PnP detection of devices tends not to vary.
However, this is a very unstable situation because adding a new HDD pushes CD-ROM to F which means all previously installed apps have incorrect associations in the registry, and if the new HDD is put on a higher priority SATA channel, the old 2nd HDD suddenly becomes E and all of the installed apps will fail to execute.
This is because those associations are not permanent if you don't explicitly assign them manually. No registry entry linking the letter with the device ID is made.
When I install a new Windows, the first thing I do, before anything else, is to assign my standard set of letters to every device, and to every partition. ( card reader W-Z, DVD-ROMs U and V, Ext HDD N, Camera O (olympus), flashdrives P,Q,R, etc etc.
That means that when the Camera, ext HDD and flashdrives aren't in use, Windows will offer N-R if I want to assign a letter to a new device (or Virtual drive), but I just don't use them because I know they're really in use, if temporarily inactive. I'll choose an unused (by me) letter. (or I would, but that's a trifle difficult these days as I've now got a permanent link for all 26 !)
 

Attachments

  • config.JPG
    config.JPG
    265.1 KB · Views: 16
Last edited:
That's a good idea. I hadn't taken time to think creatively about it, but a more spacious scheme is definitely in order here. I've been walking on eggshells about backing up to the wrong drive, with the backup program not finding its index file and doing a full backup.
bw,
p.
 
Can't access Win7 BCD - resolved

Ok, sorry about that. I made the correction, and it applied successfully. I re-hid the partition and then rebooted and tried Easy again, and unfortunately it still can't access the BCD. Frustrating, but I'm out of ideas.

Thanks,
p.


Addendum:


Wow, I may have found the answer. Nothing was working and I was giving up. But then I fired up Partition Wizard, and noticed that there was a function - hide/unhide - separate from removing the drive letter. Using Hide, the partition's status is listed as Active and Hidden.

I had assumed that removing the drive letter and hiding the partition were both the same thing. But I found in a thread from the Easeus forum:
If you don't want others to use one partition, just 'Hide' is enough. If you have important data on the partition, and fear with virus, etc, you can set it as 'None', so that nothing can access it, for there is no path anymore.
So my theory is that removing the drive label rendered the partition impenetrable to the OS. It wasn't a problem to the BIOS on the boot-up, however.

Am I correct on this? Because it would explain the behavior here perfectly. After I hid the system reserve partition, Easy had zero problem loading the BCD, even before a reboot.

One thing I still don't understand is that in Win7 Disk Management all the options and properties for the system reserve partition are grayed out. There is no way there to unhide, or do anything else to, that partition there. I would have to go to a third party tool such as PW to make changes. That's not a problem, it's just that I don't understand the rationale. Maybe Windows merely is trying to make hidden OEM partitions harder for Joe User to get into.

One other unexplained thing. When I Hid the parition the letter I had assigned it became available again. So the OS is accessing the partition by some other means.

I'll let you know if there's any change, but I think this problem is nailed. MSCONFIG's Boot tab is live again too.

Praise the Lord!


Addendum:


Hot dang. I've got my hibernation back again too! YEAH!


Paul1149,

I had exactly the same issues like you: EasyBCD couldn't find the BCD store and hibernate wasn't working. I had to assign a drive letter first to access BCC and to have a working hibernation. After a reboot the same problems occured again.
Well, after hiding the 100MB system reserve partition (by setting the NTFS partition ID from 0x07 to 0x17 using Paragon Partition Manager 10) , everything worked as expected: EasyBCD could load the system BCD and hibernation is back.

Many thanks for your valuable hint!!!

C.
 
Back
Top