Solved

Problems Creating a Key under HKEY_LOCAL_MACHINE in Vista

Posted on 2008-06-18
6
647 Views
Last Modified: 2012-06-27
We have written a C++ application that creates a registry key to store information in.  On XP computers it works fine and on most Vista computers (Home Premium) it works fine.  However on some Vista Computers it will not create the key.  Otherwise the program works fine, but the key is never created.
The key we're creating is in HKEY_LOCAL_MACHINE\SOFTWARE.  The command we're using to create it is
LONG lRes = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "Software\\OurKey\0", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &RegKey, NULL);

The user is logged in as an administrator. Does anybody have any Ideas why, in only a few cases, the key is not created?
0
Comment
Question by:jimrichmond
6 Comments
 
LVL 86

Assisted Solution

by:jkr
jkr earned 50 total points
ID: 21815317
I have the feeling that you're a victim of "Registry Virtualization" - see  http://msdn.microsoft.com/en-us/library/aa965884(VS.85).aspx ("Registry Virtualization")
0
 
LVL 45

Expert Comment

by:Kdo
ID: 21815868
Hi jkr,

One would think that Microsoft would embrace Registry Virtualization as a way to help slow the proliferation of worms and other viruses instead of declaring it obsolete the instant it's announced.


Kent
0
 
LVL 19

Expert Comment

by:LordOfPorts
ID: 21816020
Security in Vista has changed, even though the user might belong to the Administrators group the process will not run with administrator privileges unless the user explicitly permitted it. You will have to create security descriptor through an instance of SECURITY_ATTRIBUTES structure and pass a pointer to the structure to the RegCreateKeyEx function (currently you are passing NULL for this optional parameter) and ask the OS to elevate the privileges.

The following 2 articles might be useful:

http://msdn.microsoft.com/en-us/library/aa379560(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa446595(VS.85).aspx
0
Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

 
LVL 19

Accepted Solution

by:
LordOfPorts earned 75 total points
ID: 21816133
The following is another article that might be useful:

http://www.developer.com/net/cplus/article.php/3677161
0
 
LVL 16

Assisted Solution

by:joinaunion
joinaunion earned 75 total points
ID: 21816951
You can try this open registry again,click edit then permissions make sure all users are set to full control.
Then create your new key then right click  you may get a pop up (windows security)click reorder,make sure all users are set to full.
0
 
LVL 5

Assisted Solution

by:JuckMan
JuckMan earned 50 total points
ID: 21839684
Even if you log in as administrator, if you want your program to work correctly run it using "run as administrator". You can do this by right clicking on this program and select "run as administrator"

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now