• 0

[C#] Reading Registry Values


Question

Here's the situation. I have to iterate through an array of registry values in a Microsoft.Win32.RegistryKey and handle each value differently based on it's type. Here's the values and their data types:

Binary - byte[]

DWORD - int/uint

Expandable string - string

Multi-line string - string[]

String - string

I have everything working except for the expandable strings. Since they share a type with normal string values, a problem arises. I can't tell which type a value is supposed to be when I'm looping through an array of values. Here's my code:

foreach(string valueName in registryKey.GetValueNames())
{
 ? ?byte[] binaryTest = registryKey.GetValue(valueName) as byte[];
 ? ?if(binaryTest != null)
 ? ?{
 ? ? ? ?// handle binary value
 ? ? ? ?continue;
 ? ?}
 ? ?string[] multiTest = registryKey.GetValue(valueName) as string[];
 ? ?if(multiTest != null)
 ? ?{
 ? ? ? ?// handle multi-string value
 ? ? ? ?continue;
 ? ?}
 ? ?string stringTest = registryKey.GetValue(valueName) as string;
 ? ?if(stringTest != null)
 ? ?{
 ? ? ? ?if(stringTest.IndexOf("%") != stringTest.LastIndexOf("%"))
 ? ? ? ?{
 ? ? ? ? ? ?// handle expandable string value
 ? ?     ? ?continue;
 ? ? ? ?}
 ? ? ? ?else
 ? ? ? ?{
 ? ? ? ? ? ?// handle normal string value
 ? ?     ? ?continue;
 ? ? ? ?}
 ? ?}

As you can see, when I test for a string value, I'm trying to check for "%" because that would signify an expandable string. The problem is that expandable strings are meant to be unexpanded automa%ProgramFiles%m the registry. So when I try anC:\Program Filesot;%ProgramFiles%" for example, I get "C:\Program:huh:s" instead... How can I tell which strings are which types of values? :huh:

Link to comment
https://www.neowin.net/forum/topic/239805-c-reading-registry-values/
Share on other sites

1 answer to this question

Recommended Posts

  • 0

From MSDN:

REG_EXPAND_SZ: Null-terminated string that contains unexpanded references to environment variables (for example, "%PATH%"). It will be a Unicode or ANSI string depending on whether you use the Unicode or ANSI functions. To expand the environment variable references, use the ExpandEnvironmentStrings function.

This doesn't really help you if .NET auto expands these strings.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Lmao. Cries about not playing those games not installed and yet don't ever want to touch them.
    • If I want to merge folder trees that have a similar structure, Beyond Compare is always my first choice. It's not free but it's awesome. If I want to just scan a whole drive/folder and find duplicates that are taking up space, I like Czkawka.
    • Claude Code gets throttled as Anthropic rolls out fresh usage caps by David Uzondu Claude Code, the AI-in-terminal utility developed by Anthropic and launched back in February, is getting updated usage limits following weeks of user complaints about being abruptly cut off. Many developers on the "$200/month Max plan" found their access blocked after just a few requests, with no explanation from the company. In a recent thread posted to X, the AI lab explained that it has seen "unprecedented demand since launch," pointing to some of its heaviest users who were running the tool continuously in the background 24/7, with one person reportedly consuming tens of thousands of dollars in model usage on a single $200 subscription. Anthropic also claimed that some users were violating its usage policy by sharing and reselling accounts, which impacts system capacity for everyone. These factors all led the company to announce new weekly limits that will be added on top of the existing five-hour caps, effective August 28. Max plan subscribers will have the option to buy additional usage at standard API rates if they hit their cap. Here's what the new weekly limits look like: Pro Plan ($20/month): An estimated 40 to 80 hours of usage with the Sonnet 4 model. Max Plan ($100/month): An estimated 140 to 280 hours with Sonnet 4 and 15 to 35 hours with the top-tier Opus 4 model. Max Plan ($200/month): An estimated 240 to 480 hours with Sonnet 4 and 24 to 40 hours with Opus 4. Per TechCrunch, the company provided these hour-based estimates, noting that the actual numbers may vary based on the size of a project's codebase. What's interesting is how this new structure compares to the old marketing. Anthropic previously advertised its $200 Max plan as offering 20 times more usage than the Pro plan. Based on these new hourly estimates, that multiple is now closer to six. It is possible the 20x figure still applies when measured in tokens or raw compute, but, according to TechCrunch, the company has not clarified that point.
    • I don't give a rat's f### what Trumpette, the Putin puppet likes!
  • Recent Achievements

    • First Post
      Gladiattore earned a badge
      First Post
    • Reacting Well
      Gladiattore earned a badge
      Reacting Well
    • Week One Done
      NeoWeen earned a badge
      Week One Done
    • One Month Later
      BA the Curmudgeon earned a badge
      One Month Later
    • First Post
      Doreen768 earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      644
    2. 2
      ATLien_0
      260
    3. 3
      Xenon
      165
    4. 4
      neufuse
      142
    5. 5
      +FloatingFatMan
      107
  • Tell a friend

    Love Neowin? Tell a friend!