Avatar billede Slettet bruger
21. januar 2006 - 17:21 Der er 17 kommentarer og
1 løsning

Registry read, Object not set to an instance of an object!?

Jeg er ved at virke virkelig pissed over at den skal blive VED med at sige "Object not set to an instance of an object" når det F****** ligger linien over :(

ved alt andet virker det, bare ikke denne! hva kan der være galt!? baah

String[] DhcpDefaultGateway = (String[])network_key.GetValue("DhcpDefaultGateway");
                        Networks[NICCount, 3] = DhcpDefaultGateway[0];
Avatar billede Slettet bruger
21. januar 2006 - 17:22 #1
String[] DhcpDefaultGateway = (String[])network_key.GetValue("DhcpDefaultGateway");
Networks[NICCount, 3] = DhcpDefaultGateway[0];

Lidt pænere sat op:)
Avatar billede Slettet bruger
21. januar 2006 - 17:26 #2
Smider lige lidt mere info ind:

Valuen den skal læse er en REG_MULTI_SZ værdi

string service_name = "SYSTEM\\CurrentControlSet\\Services\\{D502D667-E204-4473-92E4-DBF94109590A}\\Parameters\\Tcpip";

RegistryKey network_key = local_machine.OpenSubKey(service_name);

String[] DhcpDefaultGateway = (String[])network_key.GetValue("DhcpDefaultGateway");
Networks[NICCount, 3] = DhcpDefaultGateway[0];
Avatar billede nielle Nybegynder
21. januar 2006 - 20:29 #3
Du kan jo starte med et tjek på om network_key er lig med null.
Avatar billede Slettet bruger
22. januar 2006 - 01:56 #4
tror den laver fejl fordi jeg læser en REG_MULTI_SZ værdi forkert.. hvordan er den korrekte måde at læse den på?
Avatar billede nielle Nybegynder
22. januar 2006 - 09:11 #5
Hvis fejlbeskeden kommer i forbindelse med

String[] DhcpDefaultGateway = (String[])network_key.GetValue("DhcpDefaultGateway");
Networks[NICCount, 3] = DhcpDefaultGateway[0];

- så er det fordi enten network_key eller DhcpDefaultGateway er null. Du angiver ikke hvilken af dem det er der fejler, så nærmere kan jeg ikke komme det lige nu.
Avatar billede Slettet bruger
22. januar 2006 - 10:40 #6
Det er:

Networks[NICCount, 3] = DhcpDefaultGateway[0];

Men lavede noget debuggin, det er alle værdier der er af typen REG_MULTI_SZ hvor data er = null
Avatar billede nielle Nybegynder
22. januar 2006 - 21:58 #7
Syntaksen:

String[] DhcpDefaultGateway = (String[])network_key.GetValue("DhcpDefaultGateway");

- er helt som den skal være. :^)

Men hvis data i dit REG_MULTI_SZ-felt er null, så er der jo heller ikke nogen strenge. Dermed bliver DhcpDefaultGateway et streng-array af længde 0. Derfor kan du heller ikke skrive DhcpDefaultGateway[0] uden at det giver en fejl. Imidlertid burde denne fejlbesked være en IndexOutOfRangeException - og altså ikke en "Object not set to an instance of an object" fejl. En sådan fejl burde kun komme hvis DhcpDefaultGateway-feltet slet ikke findes.
Avatar billede spif2001 Nybegynder
23. januar 2006 - 14:29 #8
Kan ikke lige se hvofor det ikke virker, men her er en singleton klasse jeg bruger til at læse ActiveSync registry key med. Kan være du kan pille noget ud...


using System;
using Microsoft.Win32;

namespace AgroSync
{
    /// <summary>
    /// RegistryReader is used to read registry keys
    /// </summary>
    public class RegistryReader
    {
        private static RegistryReader instance = null;
        private static object lockObj = new object();

        private RegistryKey baseRegistryKey = Registry.LocalMachine;

        //ActiveSync
        private const string subKeyActiveSync = @"SOFTWARE\Microsoft\Windows CE Services";
        private const string activeSyncKeyNameMajor = "MajorVersion";
        private const string activeSyncKeyNameMinor = "MinorVersion";

        private RegistryReader()
        {}//constructor

        /// <summary>
        /// The Instance property returns the Singleton instance of the RegistryReader. It is read only.
        /// </summary>
        public static RegistryReader Instance
        {
            get
            {
                lock(lockObj)
                {
                    if(instance == null)
                    {
                        instance = new RegistryReader();   
                    }//if
                    return instance;
                }//lock
            }//get
        }//property instance

        /// <summary>
        /// GetActiveSyncVersion returns the current version of ActiveSync
        /// installed on the computer.
        /// </summary>
        /// <returns>ActiveSync version.</returns>
        public string GetActiveSyncVersion()
        {
            RegistryKey rk = baseRegistryKey.OpenSubKey(subKeyActiveSync);
            if ( rk == null )
                return null;
            else
            {
                try
                {
                    return "" + (int)rk.GetValue(activeSyncKeyNameMajor)+"."+(int)rk.GetValue(activeSyncKeyNameMinor);
                }//try
                catch(Exception)
                {
                    return null;
                }//catch
            }//else
        }//GetActiveSyncVersion

    }
}
Avatar billede nielle Nybegynder
23. januar 2006 - 14:37 #9
Er du sikker på GUID'et? - på min egen msskine ligger der i hvert fald ikke noget "D502D667-E204-4473-92E4-DBF94109590A" på den angivne position.
Avatar billede nielle Nybegynder
23. januar 2006 - 14:42 #10
... jeg har derimod to andre GUID's som passer. Begge har en Parameters\tcpip-subkey, men kun den ene har en variabel DhcpDefaultGateway af typen REG_MULTI_SZ.
Avatar billede Slettet bruger
23. januar 2006 - 19:55 #11
Hey alle sammen, endelig har jeg fået det til at virke, det var en nogle nøgler den ikke kunne finde, og forkert brug af strings/arrays det lavede fejlene. Men nu skulle den virke perfekt:

public String[,] GetNetworkInformation()
        {
            //Array Information
            //Networks["NIC Count","Information"]
            //[x][0] Networkcard Name
            //[x][1] DHCP Status
            //[x][2] IP Address
            //[x][3] Subnet Mask
            //[x][4] Default Gateway
            //[x][5] DHCP Server
           
            String[,] Networks;

            string network_card_key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards";
            string service_key = "SYSTEM\\CurrentControlSet\\Services\\";
             
            RegistryKey local_machine = Registry.LocalMachine;
            RegistryKey service_names = local_machine.OpenSubKey(network_card_key);
            //if( service_names == null )return; // Invalid Registry
             
            string[] network_cards = service_names.GetSubKeyNames();
            service_names.Close();
            Networks = new String[network_cards.Length, 6];

            int NICCount = 0;
            foreach (string key_name in network_cards)
            {
                string network_card_key_name = network_card_key + "\\" + key_name;
                RegistryKey card_service_name = local_machine.OpenSubKey(network_card_key_name);
                //if( card_service_name == null ) return; // Invalid Registry

                string device_service_name = (string)card_service_name.GetValue("ServiceName");
                string device_name = (string)card_service_name.GetValue("Description");
                Networks[NICCount, 0] = device_name;

                string service_name = service_key + device_service_name + "\\Parameters\\Tcpip";
                RegistryKey network_key = local_machine.OpenSubKey(service_name);
                if (network_key != null)
                {
                    if (network_key.GetValue("EnableDHCP").ToString() == "1")
                    {
                        //DHCP Is Enabled
                        Networks[NICCount, 1] = "DHCP Is Enabled";

                        //DHCP IP Addresses
                        string DhcpIPAddress = (string)network_key.GetValue("DhcpIPAddress", "NOT FOUND");
                        if (DhcpIPAddress != "0.0.0.0" && DhcpIPAddress != null && DhcpIPAddress != "NOT FOUND")
                            Networks[NICCount, 2] = DhcpIPAddress;
                        else
                            Networks[NICCount, 2] = "Error Reading DHCP IP Address";

                        //DHCP SubnetMask
                        string DhcpSubnetMask = (string)network_key.GetValue("DhcpSubnetMask", "NOT FOUND");
                        if (DhcpSubnetMask != "0.0.0.0" && DhcpSubnetMask != null && DhcpIPAddress != "NOT FOUND")
                            Networks[NICCount, 3] = DhcpSubnetMask;
                        else
                            Networks[NICCount, 3] = "Error Reading DHCP SubnetMask";

                        //DHCP DefaultGateWay
                        try
                        {
                            String[] defaultgateways = (String[])network_key.GetValue("DhcpDefaultGateway");
                            if (defaultgateways[0] != "0.0.0.0" && defaultgateways[0] != null)
                                Networks[NICCount, 4] = defaultgateways[0];
                            else
                                Networks[NICCount, 4] = "Error Reading DHCP DefaultGateWay";
                        }
                        catch (Exception)
                        {
                            Networks[NICCount, 4] = "Error Reading DHCP DefaultGateWay";
                        }

                        //DHCP Server
                        string DhcpServer = (string)network_key.GetValue("DhcpServer", "NOT FOUND");
                        if (DhcpServer != "0.0.0.0" && DhcpServer != null && DhcpServer != "NOT FOUND")
                            Networks[NICCount, 5] = DhcpServer;
                        else
                            Networks[NICCount, 5] = "Error Reading DHCP Server";

                        network_key.Close();
                    }
                    else if (network_key.GetValue("EnableDHCP").ToString() == "0")
                    {
                        //DHCP Is NOT Enabled
                        Networks[NICCount, 1] = "DHCP Is Not Enabled";   

                        // IP Addresses
                        try
                        {
                            String[] ipaddresses = (String[])network_key.GetValue("IPAddress");
                            if (ipaddresses[0] != "0.0.0.0" || ipaddresses[0] != null)
                                Networks[NICCount, 2] = ipaddresses[0];
                            else
                                Networks[NICCount, 2] = "Error Reading IP Address";
                        }
                        catch (Exception)
                        {
                            Networks[NICCount, 2] = "Error Reading IP Address";
                        }

                        // Subnets
                        try
                        {
                            String[] subnets = (String[])network_key.GetValue("SubnetMask");
                            if (subnets[0] != "0.0.0.0" || subnets[0] != null)
                                Networks[NICCount, 3] = subnets[0];
                            else
                                Networks[NICCount, 3] = "Error Reading SubnetMask";
                        }
                        catch (Exception)
                        {
                            Networks[NICCount, 3] = "Error Reading SubnetMask";
                        }

                        //DefaultGateway
                        try
                        {
                            String[] defaultgateways = (String[])network_key.GetValue("DefaultGateway");
                            if (defaultgateways[0] != "0.0.0.0" || defaultgateways[0] != null)
                                Networks[NICCount, 4] = defaultgateways[0];
                            else
                                Networks[NICCount, 4] = "Error Reading Default Gateway";
                        }
                        catch (Exception)
                        {
                            Networks[NICCount, 4] = "Error Reading Default Gateway";
                        }

                        //DHCP Server
                        Networks[NICCount, 5] = "DCHP Not Enabled, No Server";
                       
                        network_key.Close();
                    }
                }
                NICCount++;
            }
            local_machine.Close();
            return Networks;
        }
Avatar billede nielle Nybegynder
06. februar 2006 - 18:13 #12
Lukketid?
Avatar billede Slettet bruger
06. februar 2006 - 21:45 #13
lukke???
Avatar billede nielle Nybegynder
06. februar 2006 - 23:18 #14
Hvis du har fået løst dit problem, så skal dette spørgsmpål vel lukkes?
Avatar billede Slettet bruger
07. februar 2006 - 09:06 #15
der er ingen svar at give point til?
Avatar billede nielle Nybegynder
07. februar 2006 - 17:40 #16
Enten lægger du selv et svar, eller også beder du dem som du mener har fortjent point på denne her om at lægge et svar. :^)
Avatar billede Slettet bruger
09. februar 2006 - 18:03 #17
må jo så være dig ;)

svar:P
Avatar billede nielle Nybegynder
09. februar 2006 - 22:06 #18
Sgo' :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester