Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 9
.NET 4.x

Ссылка на объект не указывает на экземпляр объекта

06.09.2022, 17:48. Показов 1551. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Написал небольшой код, все нормально, все отрабатывает как надо. проверил на других машинах с Windows 10 (21H2), не работает на свеже установленных ОС, ошибка: ссылка на объект не указывает на экземпляр объекта. Вероятно проблема с недостающими обновлениями framework, но не могу понять с какими. Опыта совсем мало, подскажите, как можно решить данную проблему?

В программе использую .NET Framework 4.5
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2022, 17:48
Ответы с готовыми решениями:

Ссылка на объект не указывает на экземпляр объекта
Доброго времени суток. Есть проблема. При запуске int RandNumbInt = 0; Random rand = new Random(); RandNumbInt =...

Ссылка на объект не указывает на экземпляр объекта
Есть программа, но с ней такая проблема... Выдаёт ошибку: Первый этап обработки исключения типа "System.NullReferenceException" в...

Ссылка на объект не указывает на экземпляр объекта
Как исправить исключение? public void AddFirst() { Book item = new Book(); item.Input(); ...

13
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,756
Записей в блоге: 1
06.09.2022, 23:05
Код в студию
0
HF
 Аватар для HF
1317 / 897 / 200
Регистрация: 09.09.2011
Сообщений: 2,692
Записей в блоге: 2
07.09.2022, 10:43
Цитата Сообщение от rene2 Посмотреть сообщение
Вероятно проблема с недостающими обновлениями framework
99.9% проблема с тем что код не состоит из одной строчки сложения двух цифр. А часть кода наверное "захардкожена" на конкретные значения. И просто на другом компьютере нет нужного файла в папке, или вообще папка другая и т.п. и т.д.
1
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 9
07.09.2022, 19:39  [ТС]
Методом исключения добрался до проблемного места, привожу только его:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            try
            {
                RegistryKey rKey = Registry.LocalMachine;
                RegistryKey sKey = rKey.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters");
                string domainName = sKey.GetValue("NV Domain").ToString();
                MessageBox.Show("Ok");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
    }
}
Проблема оказалось в том, что ключа реестра "NV Domain" на чистой системе просто не существует, но спасибо за подсказку.
0
HF
 Аватар для HF
1317 / 897 / 200
Регистрация: 09.09.2011
Сообщений: 2,692
Записей в блоге: 2
07.09.2022, 19:54
Цитата Сообщение от rene2 Посмотреть сообщение
Методом исключения
Если для примера, то понятно. Но чего тут исключать - это старт программы. Да и код ничего не делает кроме проверки наличия. Видимо пример... Реальный код был от нас скрыт.

Цитата Сообщение от rene2 Посмотреть сообщение
MessageBox.Show(ex.ToString());
И что, оно молчало и ничем не помогло?

Ваша программа и вы не знали что ей нужно? В ней 2 строчки, а вы грешили на ОС. А что будете говорить при работе с энтерпрайз приложениями?
Ну и начинайте писать чистый и очевидный код. Тогда не нужно будет делать всё в трай-кечах. Я к тому что можно проверять без кидания ошибок.
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
07.09.2022, 20:35
rene2, отличный код, все в нем прекрасно, даже то что переменная читается и никуда не используется.
с чего вы взяли что sKey будет всегда? если ключ есть то там будет значение, а если нет то там будет Null. а что будет если использовать нулевую ссылку на объект, правильно выпадет исключение что ссылка на объект пустая и не содержит в себе ссылку на экземпляр. отсюда следует что перед вызовом
C#
1
string domainName = sKey.GetValue("NV Domain").ToString();
нужно проверить skey на null
допустим if
C#
1
2
3
4
if(sKey!=null)
{
string domainName = sKey.GetValue("NV Domain").ToString();
}
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 9
07.09.2022, 21:37  [ТС]
Что вы накинулись то? Естественно реальный код на много больше. Предназначен для переключения компьютеров из одного домена в другой с переименованием ПК по определенным правилам. Там вшиты в код логины/пароли, а чистить это все барахло не хотел. Хотя, если вы согласитесь оценить мое творчество на быдлокодерство и дать советы, буду премного благодарен и приведу весь код целиком.
0
 Аватар для Andrey-MSK
3360 / 2246 / 388
Регистрация: 14.08.2018
Сообщений: 7,589
Записей в блоге: 4
08.09.2022, 08:32
Цитата Сообщение от rene2 Посмотреть сообщение
Там вшиты в код логины/пароли
Опа... А вот такое ваще делать нельзя
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 9
08.09.2022, 17:39  [ТС]
Andreyip,

C#
1
2
3
4
if(sKey!=null)
{
string domainName = sKey.GetValue("NV Domain").ToString();
}
Это не рабочий вариант. Наверное правильно так:

C#
1
2
3
4
if(sKey.GetValue("NV Domain") != null)
{
string domainName = sKey.GetValue("NV Domain").ToString();
}
Добавлено через 26 минут
Andrey-MSK,

Ну как бы метод JoinDomainOrWorkgroup подразумевает что в параметрах используются логин/пароль. Ручной ввод через форму отпадает, поскольку программа должна отработать автоматически на более 600 ПК. Если я чего недопонимаю, объясните.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
08.09.2022, 17:57
Цитата Сообщение от rene2 Посмотреть сообщение
Наверное правильно так
А почему не так
C#
1
2
3
4
5
6
7
8
9
if (sKey != null)
{
    var domain = sKey.GetValue("NV Domain");
    if (domain != null)
    {
        string domainName = domain.ToString();
        // ???
    }
}
?
1
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 9
08.09.2022, 18:16  [ТС]
Someone007,

Потому что еще до выполнения проверки sKey на нуль, вы получите исключение (если там действительно null). А следом и
C#
1
var domain = sKey.GetValue("NV Domain");
Ну коль пошла такая пьянка, там еще и rKey есть. Вдруг его тоже не существует
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
08.09.2022, 18:26
Цитата Сообщение от rene2 Посмотреть сообщение
Потому что еще до выполнения проверки sKey на нуль, вы получите исключение (если там действительно null).
С чего бы вдруг? Это в принципе невозможно...
0
0 / 0 / 0
Регистрация: 11.03.2022
Сообщений: 9
08.09.2022, 19:15  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
С чего бы вдруг? Это в принципе невозможно...
Действительно, работает. Спасибо, буду разбираться.
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,450
09.09.2022, 02:49
Лучший ответ Сообщение было отмечено rene2 как решение

Решение

rene2, на будущее: чтобы не заниматься вангованием и не грешить на "недостающие обновления", надо в приложении настраивать логирование неперехваченных исключений. Чтобы знать точную строку, где оно возникло. Погуглите, примеров в сети навалом.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2022, 02:49
Помогаю со студенческими работами здесь

Ссылка на объект не указывает на экземпляр объекта
Приветствую всех, признаю ошибка от пропусков в знании с#, но своими силами ответа не смог найти( помогите пожалуйста public partial...

Ссылка на объект не указывает на экземпляр объекта
знаю что подобных тем много, но так и не доперла где и как изменить параметр null. ругается на эту зеленую строчку помогите пожалуйста ...

Ссылка на объект не указывает на экземпляр объекта
Помогите разобраться в чем проблемма? Выдает такую ошибку "Ссылка на объект не указывает на экземпляр объекта." вот тут ...

Ссылка на объект не указывает на экземпляр объекта
Что не так?? static void Main(string args) { BookLinkedList b1 = new BookLinkedList();...

Ссылка на объект не указывает на экземпляр объекта
Помогите с кодом! public string prihod; private void dataGridView1_CellContentDoubleClick(object sender,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru