This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: file path in registry on 64 bit machine being changed automatically
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page

Not applicable
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
08:44 AM
file path in registry on 64 bit machine being changed automatically
Hi.
I have made a 32 bit msi package and installing it on a 64 bit machine.
I need to get a folder path from the registry.
The registry value is located in
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Forefront Identity Manager\2010\Synchronization Service]
and the value is
"Location"="C:\\Program Files\\Microsoft Forefront Identity Manager\\2010\\"
when i get the value and use it later on in the installer it shows up as
C:\Program Files (x86)\Microsoft Forefront Identity Manager\2010\
Thats not what I want, I want the real value not a modified one.
How can I prevent this from happening?
I really hate when programs is intelligent enough to know what you want.
Hope someone have an answer.
Best regards,
Jens
I have made a 32 bit msi package and installing it on a 64 bit machine.
I need to get a folder path from the registry.
The registry value is located in
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Forefront Identity Manager\2010\Synchronization Service]
and the value is
"Location"="C:\\Program Files\\Microsoft Forefront Identity Manager\\2010\\"
when i get the value and use it later on in the installer it shows up as
C:\Program Files (x86)\Microsoft Forefront Identity Manager\2010\
Thats not what I want, I want the real value not a modified one.
How can I prevent this from happening?
I really hate when programs is intelligent enough to know what you want.
Hope someone have an answer.
Best regards,
Jens
(7) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
09:32 AM
I'm a little confused. Are you saying that the value returned in the AppSearch is modified? Or is the value getting modified later throught some other action?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
11:09 AM
jenskjensen wrote:
Hi.
I have made a 32 bit msi package and installing it on a 64 bit machine.
I need to get a folder path from the registry.
The registry value is located in
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Forefront Identity Manager\2010\Synchronization Service]
and the value is
"Location"="C:\\Program Files\\Microsoft Forefront Identity Manager\\2010\\"
when i get the value and use it later on in the installer it shows up as
C:\Program Files (x86)\Microsoft Forefront Identity Manager\2010\
Thats not what I want, I want the real value not a modified one.
How can I prevent this from happening?
I really hate when programs is intelligent enough to know what you want.
Hope someone have an answer.
Best regards,
Jens
If you are installing to the property [ProgramFiles] on a 64-bit machine, the actual product WILL BE installed to C:\Program Files (x86) -- there is an actual folder on the machine for 32-bit apps and that is where you product is more than likely installed on a 64-bit machine.
I don't understand why on a 64-bit machine you would want C:\Program Files instead of C:\Program Files (x86)

Not applicable
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
02:25 PM
Hi.
Trying to explain it in more depth.
I'm installing a 32 bit program on a 64 bit machine.
when installing i'm searching the registry for a path to a 64 bit program already installed on the system,
The path is located here [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Forefront Identity Manager\2010\Synchronization Service] and when looking at it in regedit it shows up as C:\Program Files\Microsoft Forefront Identity Manager\2010\ (Because its a 64 bit program) the value is saved in a property.
Then i'm writing the value into a config xml file.
When looking at the xml file on the target system it shows up as C:\Program Files (x86)\Microsoft Forefront Identity Manager\2010\
It has changed and I don't have any transforming of the result. Reads it and then writes it to the config file.
Hope this explains my problem
Best regards
Jens
Trying to explain it in more depth.
I'm installing a 32 bit program on a 64 bit machine.
when installing i'm searching the registry for a path to a 64 bit program already installed on the system,
The path is located here [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Forefront Identity Manager\2010\Synchronization Service] and when looking at it in regedit it shows up as C:\Program Files\Microsoft Forefront Identity Manager\2010\ (Because its a 64 bit program) the value is saved in a property.
Then i'm writing the value into a config xml file.
When looking at the xml file on the target system it shows up as C:\Program Files (x86)\Microsoft Forefront Identity Manager\2010\
It has changed and I don't have any transforming of the result. Reads it and then writes it to the config file.
Hope this explains my problem
Best regards
Jens
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
02:41 PM
I thought it was YOUR program that you were writing to / reading from that specific registry entry... sorry for the confusion.
Did you happen to check the following registry entry to see if IT exists also?
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Forefront Identity Manager\2010\Synchronization Service]
It may be that both registry entries actually exist on your 64-bit system and the System Search is actually reading from the above location which may actually have the "C:\Program Files (x86)" directory in it. It sounds like a service that you are looking for, so there may be a 32-bit and a 64-bit service installed on that machine..
If your system search is setup to use the "Default" registry processing, it will by default, look in the above location because you are a 32-bit app running on a 64-bit machine.
However, if you explictly tell the System Search to look in the 64-bit portion of the registry, it will read the other registry location that you want to look for:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Forefront Identity Manager\2010\Synchronization Service]
I hope this helps...
Did you happen to check the following registry entry to see if IT exists also?
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Forefront Identity Manager\2010\Synchronization Service]
It may be that both registry entries actually exist on your 64-bit system and the System Search is actually reading from the above location which may actually have the "C:\Program Files (x86)" directory in it. It sounds like a service that you are looking for, so there may be a 32-bit and a 64-bit service installed on that machine..
If your system search is setup to use the "Default" registry processing, it will by default, look in the above location because you are a 32-bit app running on a 64-bit machine.
However, if you explictly tell the System Search to look in the 64-bit portion of the registry, it will read the other registry location that you want to look for:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Forefront Identity Manager\2010\Synchronization Service]
I hope this helps...

Not applicable
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 17, 2010
02:51 PM
Hi.
Thanks for helping me 🙂
I'm looking in the 64 bit part of the registry and its the only entry.in the registry. 😞
Thanks for helping me 🙂
I'm looking in the 64 bit part of the registry and its the only entry.in the registry. 😞
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 18, 2010
08:24 AM
Have you looked at a log file to determine where it is getting changed? If you look at the AppSearch action you should be able to tell if is being retrieved properly, and if you do a search on that property name you should be able to see if it is getting re-written somewhere.
I assume you are using IS XML handling; if the property is being retrieved properly and not being changed by Windows Installer, then it must be the IS XML dll that is doing it and you'll have to go to their Support people to find out if you can prevent it. (Or write your own dll to do the XML handling...)
I assume you are using IS XML handling; if the property is being retrieved properly and not being changed by Windows Installer, then it must be the IS XML dll that is doing it and you'll have to go to their Support people to find out if you can prevent it. (Or write your own dll to do the XML handling...)
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Nov 25, 2010
09:21 AM
when runnin a 32-bit installer on a 64-Bit system, all paths that are retrieved via the systemsearch and contain 'Program Files' in their path location... they are automatically changed by installshield into 'program files (x86)'... if you want it or not.
Workaround solution I use: define the registry search in the script instead of using the APPSEARCH. A path property set via the script is left untouched.
Workaround solution I use: define the registry search in the script instead of using the APPSEARCH. A path property set via the script is left untouched.
