I am trying to to read registry key on Windows 7 using app compiled by Delphi 7 using jclRegistry from Jedi 2.10.
I've double checked registry using regedit and specified entry exists.
Unfortunately:
RegReadStringDef(HKEY_LOCAL_MACHINE, 'SOFTWARE\Borland\Delphi\7.0', 'RootDir', '') - returns ''
Is it a chance to fix it without upgradind jedi , delphi etc.
If it is could someone give advice please?
As far as i see that particular registry Key is in HKEY_CURRENT_USER and not in HKEY_LOCAL_MACHINE
The RegReadStringDef should work in your JEDI version too.
Related
I've been working on detecting Windows 11 machines, which I have successfully done by looking at the CurrentBuild registry value for anything above the build 22000+. However, when it comes to determining Windows 11 editions such as Home, Pro, Enterprise, etc. the only thing I can think of is parsing the ProductName registry value and looking for key words that correspond to the Windows 11 editions. I have tried to look through the Registry to find anything resembling 'Windows 11 Home/Pro/Enterprise' but I have not been able to find anything. Has anyone been able to find a registry value that corresponds to the edition other than in the way I'm currently doing?
From code, you can make use of GetProductInfo assuming you have the proper manifest in your EXE.
Alternatively, look at the WMI API using OperatingSystemSKU in Win32_OperatingSystem.
How can I find all the installed versions of Firefox browser on Windows XP ? Is there, for example, a special windows registry key where all the versions are stored ? I need this information in order to code a program that tells me what are these installed versions on my Windows XP. I am not asking you to code the program for me, I just ask where I can find that information.
There are some registry keys accessible under
HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla
I need take an old software that was built in 4D 2004 (you probably never heard about 4D but it doesn't matter) and make it compatible with Windows 7 by fooling it and making him believe he's running under Windows XP.
I thought the application was getting the version number of windows from HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion and that I could change this value but I was wrong… Even if I change the values in the registry, the version number of windows returned by my application is always the same:
498139398 for Windows 7
170393861 for windows XP
Those value contains the windows version (this link explain how to extract the version number) but I don’t know where it was taken from.
If you google those numbers, you’ll find out that other applications are referring to the same version number.
I tried to find what registry was used by the application with a Process Monitor but none of the registry accessed by the application seems to be related to a windows version.
Does anyone have a clue of where those values might be coming from? Could it be outside the registry / hardcoded somewhere?
Windows already has tools to do this. Have you tried right-clicking on the program, selecting Properties and looking at the Compatibility tab?
For more complex tricks investigate "Microsoft Application Compatibility Toolkit".
Using either the registry or the file system. The reason for the restriction is that I am doing this as an MSI conditional statement.
Cheers!
under registry key
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
look for key pair:
CurrentVersion = Microsoft Windows NT 5.1.2600 Service Pack 3
You should find enough information to determine the OS service pack (in the worst case you can always use the build string) in the following registry key:
HKLM\Software\Microsoft\Windows NT\CurrentVersion
If you're using an MSI, you should be able to use the VersionNT and ServicePackLevel properties right in the conditional statement.
eg. The following code checks for Windows XP sp3 or greater:
VersionNT=501 And ServicePackLevel>2
You can also check the WindowsBuild property if you also need the build number.
The VerifyVersionInfo function should allow you to check the version of Windows being run meets your application's requirements, without the pitfalls that can occur with checking for an exact version with GetVersionEx (such as breaking on major version changes - your application will most likely run on Vista, and Windows 7, and future versions not yet developed).
"Run" (Windows key + r or start/run) msinfo32 or sysdm.cpl
I am working on windows 7 support. In my application I want to gather installed updates and patches. Currently I am gathering it from WIn32_QuickFixEngineering. But it is not giving information for InstalledSDate , Description.
I need to get this either from registry or API (C++ application). In other operating system like XP, 2k3 registry keys are-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates
But these are not present on windows 7.
Can any one give thought on this..
I was also trying to figure out where the registry key for "Hotfix" had moved to.
I am setting up a debug symbol server on Windows 7. While I was following instructions from the book Debugging Applications for Microsoft ... Windows (by John Robbins), I was getting the error "Unable to enumerate the hot fix key" from a piece of vbscript code that Mr. Robbins recommends.
I realized that the vbs code is looking for the reg key SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix, which is not present on Windows 7.
While searching for a substitute key (or any other alternative), I found some helpful information here: http://forums.cnet.com/5208-12546_102-0.html?threadID=327588
The command shown on that cnet forum was a viable substitute in my case:
wmic qfe list full
shown at the cmd.exe prompt:
C:\Users\All Users>wmic qfe list full
Windows Update Agent API
Not sure if this is your issue: InstallOn properties for QFEs are sometimes stored as 64-bit, hexdecimal timestamps. To use this as a date:
Check first whether it is a hexadecimal value. If not, it is likely a regular date value.
Then, (in C#) use this to convert it to a DateTime:
DateTime.FromFileTimeUtc( Int64.Parse(<InstallOn>, System.Globalization.NumberStyles.AllowHexSpecifier));
try looking here:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages]