Registry key error if the folder doesn't exist in VB - vb.net

I am trying to add a registry key in to the file "MyApp" which doesn't yet exist in the registry key directory, when I try and write this key however I get an error from the debug console telling me the "NullReference was unhanded". If I go and manually make this folder it works brilliantly, so can anyone help me as I thought that this code would make the folder as well? If you could show me what code needs to also be there I would be very grateful!
The code I am using is:
My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\MyApp", True).SetValue("AppName", "SerialKey")

OpenSubKey("SOFTWARE\MyApp", True) will open the key for write access only if it already exists. If the key doesn't exist, it will return null. Since you are blindly calling SetValue on a null reference, you will get the null reference exception.
The simplest solution to your requirement is to call CreateSubKey("SOFTWARE\MyApp") instead. This does exactly what you want, i.e. creates a new subkey or opens the existing subkey for write access.

adding and editing LocalMachine registry key needs administrator privilege in win 7, may be you are getting the error because of this

Related

How to query registry rights on a key using vb.net

Need to query a specific key in the HKLM hive for security permissions. We do not want to change the permissions, just log them to a file. To start I would be satisfied with using WriteLine or a msgbox to display the permissions on the key. I'm new to VB.net. I can't find an example of querying keys only adding them, modifying permissions. Can RegistryRights.FullControl be used to return True or False? If so, can someone provide a link online that has a good example?
I have searched for hours online and have tried to modify the examples here to only perform a query on a key, but I cannot create a query on registry key permissions. https://learn.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.registryrights?view=netframework-4.8
Here is a sample of code to attempt permission changes. But we want to query, not change permissions.
' Prevent the current user from writing or changing the
' permission set of the key. Note that if Delete permission
' were not allowed in the previous access rule, denying
' WriteKey permission would prevent the user from deleting the
' key.
rs.AddAccessRule(New RegistryAccessRule(user,
RegistryRights.WriteKey Or RegistryRights.ChangePermissions,
InheritanceFlags.None, PropagationFlags.None, AccessControlType.Deny))
Expected output would be something like this where the field is True or false or 983103 or some other value:
Console.WriteLine("Regkey rights on HKLM\Software\wow6432node\somekey\ " & RegistryRights.FullControl)
In case someone is trying to do the same thing, I found this Sysinternals Application that does exactly what we need to do.
https://learn.microsoft.com/en-us/sysinternals/downloads/accesschk
We'll include it with our app and call it.
Sample command we'll be using
accesschk.exe -k users hklm\software\wow6432node\somekeyhere

Save and Get a Registry Value in 'HKEY_LOCAL_MACHINE\Software' using VB.NET

In my VB.NET project I want to save and get a registry value in "HKEY_LOCAL_MACHINE\Software" but I am only able to save and get it in "HKEY_LOCAL_MACHINE" but not software.
Here is my code:
For setting the value
My.Computer.Registry.LocalMachine.SetValue("Study", "1")
For getting the value
Dim RegistryCheck As String = My.Computer.Registry.LocalMachine.GetValue("Study")
You have to verify if you have the permission to write (and also read) from HKEY_LOCAL_MACHINE. If you can't get the required permissions (which is quite possible), opt for HKEY_CURRENT_USER (My.Computer.Registry.CurrentUser). Anyway, you have to specify what kind of permissions you're requiring: Read/ReadWrite. See the overloads of the OpenSubKey() method. Two of them let's you specify these requirements. If/When you are granted the permission, create the subkey (CreateSubKey()) and then set a key value inside it (with SetValue()), specifying a value type with RegistryValueKind.

Documentum Docbase is unable to save an object

When I using the following API script to save an object,it just hangs up and no result...
link,c,object_id,/temp1/temp2 save,c,object_id
Also I have other test like :
create a new dm_folder object and link to /temp1/temp2, object created.
update dm_folder object to link and unlink, object is linked and unlinked to expected folder paths.
All the above two steps works, but not the ‘save’, why?
Could you guys give me some advice on this issue?
You are mistaking somewhere. API command
link,c,<object_d>,<path_to_link_object_to>
save,c,<object_id>
works as expected, i.e. it links object to specified path which is provided as last argument in first command.
Try formatting better your question so we can identify your syntax errors if there are any.

Can't read key?

Ok so I am making this system information application that runs on the desktop, but for some reason this gives me an error.
Error: [ArgumentException was unhandled] Registry key name must start with a valid base key name.
I can see the registry is there.
Dim readValue As String
readValue = My.Computer.Registry.GetValue _
("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\SYSTEM\CentralProcessor\3","ProcessorNameString",Nothing)
Label9.Text = CStr(readValue)
Edit: This sight just helped me, there was 2 Unicode chars in there.
I think the problem with program permission ,HKEY_LOCAL_MACHINE needs administrator access, in app.manifest
Change
to

powershell + sql server provider

When using the sql server provider in powershell, the path I pass works fine the first time, but upon the second run it errors out on me. It's like I have to clear the drive somehow?
Example:
sl "SQLSERVER:SQL\SERVERNAME\DEFAULT\DATABASES\DATABASENAME\Tables"
works fine the upon the first run. The location is successfully set. But, when I run it a 2nd time, I get this error:
Set-Location : SQL Server PowerShell provider error: The number of keys specified does not match the number of keys required to address this object. The number of keys requi
red are: Schema.Name.
I'm using quest powergui btw. Please help, this is driving me mad.
Looks to me like you're using a relative path (i.e. it doesn't start with a slash after the provider:). So, first you've set the location relative to the default--root folder. Then, you try to set the location again, but you're already in the "tables" folder, which doesn't have a "SQL\SERVERNAME..." folder inside it.
Does that make any sense?