Console app and microsoft.win32

All,

I have a simple console application done in c#, built in vs.net 2003.  I have included microsoft.win32 as i'm hitting the registry.  I can run the app locally, but when I run it on a basic pc, it wont' work.  If I comment out the Microsoft.win32 and the reg calls, it works fine.

Any ideas how to solve.

Thanks in advance,
Kris



kdunnettAsked:
Who is Participating?
 
Expert1701Connect With a Mentor Commented:
Excellent example, kdunnett; it failed on my system (Windows XP Professional, Office 2003 Professional).

Please try the following adjustment:

  CurrentUser = CurrentUser.OpenSubKey("Software\\Microsoft\\Windows Nt\\CurrentVersion\\Windows Messaging Subsystem\\Profiles\\Outlook", false);

  if (CurrentUser == null)
  {
    Console.WriteLine("Key does not exist!");
  }
  else
    foreach (string KeyName in CurrentUser.GetSubKeyNames())
    ...

Note that if you remove your try...catch block while testing, the exception message should provide more detail.
0
 
Carl TawnSystems and Integration DeveloperCommented:
What happens when you try to run it ? Does it throw any exceptions ?
0
 
Expert1701Commented:
> I can run the app locally, but when I run it on a basic pc...

  Is the "basic pc" accessing the application from the network?  If so, can you try copying the application to the (C:) drive of the basic pc, and try again?
0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
kdunnettAuthor Commented:
Window pops up:
common language runtime debugging services
application has generated an exception that could not be handled.
process id = 0x6f4(1780), thread id=0x400(1024)

On the command line:
Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.
   at Application.class1.Main(String[] args)
0
 
kdunnettAuthor Commented:
The app is running locally on the test pc.  
0
 
Expert1701Commented:
What operating systems are the two PCs running?
0
 
kdunnettAuthor Commented:
win 2000 on the test pc.  win xp on the development machine (the that works).

But I just tried the exe on another test pc with win xp, and that didn't work.

0
 
Expert1701Commented:
Can you verify that your Registry calls would actually successful on another machine (i.e. check the registry on the test machine to make sure the keys you are looking up actually exist, or if you are making modifications then make sure you have the appropriate permissions)?

If you are still stuck, a post with some more code from your Main method would be helpful.
0
 
kdunnettAuthor Commented:
I'm thinking that it has something to do with .net framework and how on the test pc's its quite limited.

Is there a dll out there that contains the same methods and such thats in the microsoft.win32 namespace?
0
 
Carl TawnSystems and Integration DeveloperCommented:
It may be a permissions issue that your code doesn't currently handle rather than there being something missing. Are you running the app under an Administrator account on all the machines ?
0
 
kdunnettAuthor Commented:
I"m logging in as the admin on the test pc's...  so permissions are valid.

yes, registry folder exists.

Here's the whole section that doesn't work...  you should be able to compile with no issues.  Just confirm you have the path first.  and just does a read, no modification at all.
________________________________


using System;
using Microsoft.Win32;

namespace LDAPEditRegistry
{
      /// <summary>
      /// Summary description for Class1.
      /// </summary>
      class Class1
      {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                  try
                  {
                        RegistryKey CurrentUser = Registry.CurrentUser;
                        CurrentUser = CurrentUser.OpenSubKey("Software\\Microsoft\\Windows Nt\\CurrentVersion\\Windows Messaging Subsystem\\Profiles\\Outlook",false);
            
                        foreach(string KeyName in CurrentUser.GetSubKeyNames())
                        {
                              Console.WriteLine(KeyName);
                  
                              RegistryKey OurKey = Registry.CurrentUser;
                              OurKey = OurKey.OpenSubKey("Software\\Microsoft\\Windows Nt\\CurrentVersion\\Windows Messaging Subsystem\\Profiles\\Outlook\\"+ KeyName,false);

                              foreach(string valuename in OurKey.GetValueNames())
                              {
                                    if(valuename == "001e6608")
                                    {
                                          Console.WriteLine("\t\tValueName: "+ OurKey.GetValue(valuename).ToString());

                                          if(OurKey.GetValue(valuename).ToString() == "100")
                                          {
                                                Console.WriteLine("\t\tFOUND THE '100' VALUE");
                                          }
                                    }            
                              }
                        }
                  }
                  catch(Exception ex)
                  {
                        throw ex;
                  }
                  finally
                  {
                  }
            }
      }
}
0
 
Expert1701Commented:
Note that, you will also need to check that OurKey is not null before proceeding to call OurKey.GetValueNames.
0
 
kdunnettAuthor Commented:
Expert1701,

Thanks.  I found out that the path in the registry (depending on computer) changes for the last entry in the path.

I just wasn't looking far enough down in the tree.

Thanks for your help!
Kris
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.