Hardcoded reparse points

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

If you look closely you will see that C:\ProgramData\Documents is a reparse
point and link to C:\Users\Public\Documents.

This is not an issue as long as you do not add a another Vista boot HD as a
secondary drive. Apparantly the links used to link to those folders use C:\
as hardcoded root and actions on the old Vista HD directories for
\ProgramData\Documents will find its way to the default installation drive
C:\ProgramData\Documents

This is not acceptable and any links defined in Vista should use a relative
path rather than an absolute path.
 
If you look closely you will see that C:\ProgramData\Documents is a reparse
point and link to C:\Users\Public\Documents.

This is not an issue as long as you do not add a another Vista boot HD as a
secondary drive. Apparantly the links used to link to those folders use C:\
as hardcoded root and actions on the old Vista HD directories for
\ProgramData\Documents will find its way to the default installation drive
C:\ProgramData\Documents

This is not acceptable and any links defined in Vista should use a relative
path rather than an absolute path.

Check out http://www.jimmah.com/vista/Security/junctions.aspx - the
guy has done a stellar job of comparing the old XP path names, with
the new Vista names - which are more UNIX like with the user name
higher up the tree than the files.
 
Can you give us a simple procedure that demonstrates the problem?
Something like:
1) Install two hard drives in a system.
2) Boot from a bootable CD and format (FAT32) the first hard drive as a
bootable W98 DOS system. Or maybe the problem would only occur if the
first drive were NTFS format. This makes it more difficult to later verify
that stuff had been written to the drive, although there are DOS drivers to
access NTFS.
3) Boot from a full install Vista CD and install Vista on the second hard
drive.
4) Run Vista, verifying that it believes it is installed on Drive D:
5) Save some stuff to reparse point type folders.
6) Boot from a BARTPE CD or other bootable media that can view the file
structure of NTFS-formatted partitions.
7) Verify that the stuff you saved to the reparse-point folders is actually
on the C: drive instead of on the D: drive and that the D: drive really has
the Vista install.

Do you think this kind of procedure would demonstrate the effect?

-Paul Randall
 
I first noticed this when I tried to remove old directories on my old
harddrive that I had connected to my new system. I was denied to remove some
directories so I used takeown and icacls to take ownership and reset
permissions.

The reparse points created on the hardrive of my old computer was hardlinked
to C: and even though it was seen as D: on my new system the reparse points
linked to C:.

My attempts to take ownership and reset permissions seemed to have followed
these links and my first indication of this what that the program menu
(start-programs) had most installed programs missing.

I was puzzled but I managed to find out that ProgramData had several reparse
points that might explain it. I used "dir /a" in the ProgramData folder of
the attached drive and saw the reparse points resolve to a folder on C drive
even though the harddrive was not the C drive.

In my specific case
The E:\ProgramData\Desktop folder resolved as C:\Users\Public\Desktop

You can reproduce this behaviour with Virtual PC and installing Vista twice.
I installed Vista twice and on my second installation I attached the
harddrive file of the first installation. I then open a command window and
then set the current path to E:\ProgramData\Documents (the attached harddrive
file got assigned to E:). In that path I ran notepad and saved a new file.
The path of the saved file was E:\ProgramData\Documents. I then changed path
to C:\Users\Public\Desktop where the reparse point of
E:\ProgramData\Documents points to. In that folder I saw the textfile and its
content that I saved to E:\ProgramData\Documents.

There are probably few that will experience this issue but it is a real
reproducable issue and may have greater impact than messing up
filepermissions that was what I experienced.

Best regards,
Andreas
 
The issue I see has nothing to do with XP. My issue is that certain reparse
points seem to be hardcoded to the C: drive and a hardrive with a Vista
installation that is attached to another system with Vista installated will
resolve those links to to the C: drive even though the reparse point should
not point to it.

/Andreas
 
If you demonstrate the problem by installing two copies of Vista in a
virtual PC, how do you tell whether it is a symptom of a problem in one of
the virtual Vistas or a problem in the virtual PC software or the OS that
virtual PC is running under? Have you seen the problem with a real Vista
installed on a real drive not lettered c:?

-Paul Randall
 
Not sure what you are suggesting. I saw this in a non-virtual environment
when I attached the harddrive of my previous computers harddrive (that had
Vista installed) to my new computer with a fresh Vista installation.

I tried to avoid reformatting the disk from my old system and when deleting
folders on it I had no access, even as a administrator user. I then tried to
take ownership and reset permissions. Because of hardcoded reparse points to
the C drive on the D drive I ended up modifying my fresh and current Vista
installation rather than only changing what was on the old drive.

I am not suggesting that it would be a problem if Vista was installed on the
D drive. When I install Vista I have noticed that reparse points in
ProgramData is linked to folders on the drive I install it on. When I attach
a harddrive with Vista installed I see that those links are not relative to
the harddrive but hardcoded to the harddrive letter that it was installed on.

I will suggest you take the time to reproduce this issue as I have described
and explain to me why reparse points of the first Vista installation resolve
to the folders of the second installation. When you have explained that to me
I will demonstrate this issue when installing Vista on a drive other than C
and attaching a drive with Vista installed.
 
Your original install of the now D drive was as a C drive which is why you
have C set in the registry
 
Andreas Johansson said:
Not sure what you are suggesting. I saw this in a non-virtual environment
when I attached the harddrive of my previous computers harddrive (that had
Vista installed) to my new computer with a fresh Vista installation.

I think this explains your problem.
When you install a Windows OS, the registry is stuffed with references to
various files; these references include the full path, including drive
letter. I'm assuming that when both of these Vistas were installed, they
were installed on the only drive, C:. When you attach both drives to the
computer at once, one of them can not be C:. When you boot up the system
not on C:, its registry still points to C: and will both read and write to
C:

-Paul Randall
 
Both are not C from the other install of Vista

Paul Randall said:
I think this explains your problem.
When you install a Windows OS, the registry is stuffed with references to
various files; these references include the full path, including drive
letter. I'm assuming that when both of these Vistas were installed, they
were installed on the only drive, C:. When you attach both drives to the
computer at once, one of them can not be C:. When you boot up the system
not on C:, its registry still points to C: and will both read and write to
C:

-Paul Randall
 
I think this explains your problem.

I have already explained my problem. I didn't post a question, I posted a
comment about an issue I noticed in the Vista installation.

The Vista installation uses absolute reparse points in ProgramData to the
driveletter it is installed on. It should be able to use relative reparse
points and completely remove the issue of resolving to a folder on another
harddrive than intended.


/Andreas
 
Back
Top