Registrykey reading problems

P

pantagruel

Hi,

I'm trying to read a registry key:

I've tried:

RegistryKey rkey1 = rkey.OpenSubKey(
"SYSTEM\\CurrentControlSet\\Services\\Rendering Service");

then
RegistryKey rkey1 = rkey.OpenSubKey(
"SYSTEM\\CurrentControlSet\\Services\\Rendering Service\\");
due to problems

I've tried

RenderingQ = rkey1.GetValue("RenderingQOnDemandQ");

which gave an error when compiling of
Error 6 Cannot implicitly convert type 'object' to 'string'. An
explicit conversion exists (are you missing a cast?)

which seems weird, from the documentation I thought GetValue returned
a string?
so I tried:

RenderingQ = rkey1.GetValue("RenderingQOnDemandQ").ToString();

that compiles.

When I run it however I get a null value exception (the same situation
exists for all the various keys I'm working with)

if I do a registry dump of the key I'm working with I get:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rendering
Service]

and
"RenderingQOnDemandQ"="C:\\RenditionServerQ\\QueueManagerQ\\OnDemandQ"

So I suppose there is something simple that i don't know about working
with the registry in .Net that someone can help me with?

Is it a casting exception?
How should I cast?
 
P

pantagruel

Hi,

I'm trying to read a registry key:

I've tried:

RegistryKey rkey1 = rkey.OpenSubKey(
"SYSTEM\\CurrentControlSet\\Services\\Rendering Service");

then
RegistryKey rkey1 = rkey.OpenSubKey(
"SYSTEM\\CurrentControlSet\\Services\\Rendering Service\\");
due to problems

I've tried

RenderingQ = rkey1.GetValue("RenderingQOnDemandQ");

which gave an error when compiling of
Error 6 Cannot implicitly convert type 'object' to 'string'. An
explicit conversion exists (are you missing a cast?)

which seems weird, from the documentation I thought GetValue returned
a string?
so I tried:

RenderingQ = rkey1.GetValue("RenderingQOnDemandQ").ToString();

that compiles.

When I run it however I get a null value exception (the same situation
exists for all the various keys I'm working with)

if I do a registry dump of the key I'm working with I get:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rendering
Service]

and
"RenderingQOnDemandQ"="C:\\RenditionServerQ\\QueueManagerQ\\OnDemandQ"

So I suppose there is something simple that i don't know about working
with the registry in .Net that someone can help me with?

Is it a casting exception?
How should I cast?

oops, obviously should note that rkey is RegistryKey rkey =
Registry.LocalMachine;
 
M

Marc Gravell

It definitely returns an object - after all, not all attributes are strings.

You might want to double-check the key name; equally, using string literals
(i.e. @"foo") can make it easier to avoid escaping issues. Using a different
key (that exists on my machine) the following works fine:

string value = Convert.ToString(
Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess",
@"DisplayName", null));

Marc
 
F

Family Tree Mike

Be aware that registry virtualization on Vista or 64bit OS's will mess up
your mind in this scenario. If you are on 32 bit XP however, I don't see why
this wouldn't work, given the key is specified correctly.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top