Было бы классно посмотреть ваши видео на счёт реестра, где бы вы рассказали, что это такое и как его видеть изнутри, свои фишки, как познавали в общем и схожее. Можно всё это загуглить, конечно, но человеческий язык всё-таки ближе нам, начинающим. Спасибо за уроки!
Тернарный оператор: [первый оператор - условие] ? [второй оператор - if true] : [третий оператор - if false (ну или по другому else)] ! Всё просто огонь! ЛАЙК!
тот момент когда познал кайф от тернарной операции во второй раз... спасибо добрый человек... если я все таки осилю шарпу и напишу нужный мне проект, в долгу не останусь)
i guess Im randomly asking but does anyone know of a method to get back into an instagram account?? I somehow forgot the account password. I would appreciate any tips you can give me
Все круто, решил вспомнить C# Теперь я точно знаю как программисты шваркают себе реестр, а с ним и систему. Привет из сервиса. ЗАПОМНИТЕ бекап реестра перед работай, как и точка отката системы - это миф для трусов. А ресстр всегда полностью весит в памяти из воздуха и пока ПК НЕ ВЫКЛ HDD не шоркает не как при чтение и записи... Куда сохранять, файл или реестр выбор каждого. (особенно мега базы наработок :))) ) Но че-то не при работе с файлами не при работе с реестром не кто не упомянул MSQL. Я для себя сделал вывод, мелкие настройки скрыто лучше в реестре. Если пользователю без доп знаний ПК к ним нужен спец допуск - то файл. Но из-за чего обычно стоит выбор куда сохранять особенно большие объемы данных (не было упомянуто) и быстро иметь к ним доступ как вреестре. ПРИВЕТ ИЗ СЕРВИСА еще раз, НАПОМИНАЮ Windows не относится к гарантийному случаю.
Большое спасибо за урок. Основы работы с реестром получил, а дальше методом научного тыка и гугления буду разбираться. Еще есть один вопрос: сейчас занимаюсь небольшим проектом, который будет парсить картинки с сайта и с определенным интервалом менять их на рабочем столе. Но при смене обоев, как и ожидалось, они просто быстро меняются. Буду благодарен, если подскажете, как реализовать плавную смену изображения. И еще хотелось бы получше разобраться с веткой Control Panel\Desktop. Буду благодарен за любую помощь))
Спасибо за видео - то что искал !!! Можете еще подсказать , в каком видео рассказывается про using попробовал поиском в канале воспользоваться, то что нашел, там про using не упоминается. Спасибо !!!
Очень интересно! Со всем согласен (особенно в теоретической части). Особенно зашло работа с INI-файлами, но не для хранения настроек. В моём случае это создание проекта приложения и его компонентов (без API). Хотя в API, ничего плохого не вижу... Хочу увидеть чтение и создание в реестре значение мультистринг.
Вот тут не совсем понял (26:27) Получается, если Ключа, либо Параметра не существует, то строка в label1 остаётся вообще не затронутой, а если ключ и параметр есть, то ТОЛЬКО ТОГДА записывается в строку что-то ("что-то" в этом случае - значение параметра)? А тут как раз то понял (36:27) Выходит, если все три условия в тернарном операторе выполняются, будет явно true, в любом другом случае явно false
Большое спасибо за видео! Ваши уроки, Хачатур, хорошо запоминаются, и смотреть их весело и интересно. У меня вопрос на засыпку) Почему нельзя сравнивать процессы по их типу (можно по ID и имени, но было бы быстрее прямое сравнение). Вот что я имею в виду: Process p = Process.Start("notepad"); Process[] array = Process.GetProcesses(); if (array.Contains(p)) MessageBox.Show("contains"); Почему при такой организации поиска сообщение не выводится (при поиске по id, разумеется, находит)?
@@XpucT Оно-то так, но по идее переменная привязывается к процессу, к которому применяем метод запуска. Но Ок, я уже как только ни пробовала. Вот вариант привязки к текущему процессу: Process.Start("notepad"); Process p = Process.GetCurrentProcess(); Process[] array = Process.GetProcesses(); if (array.Contains(p)) MessageBox.Show("contains"); Разницы нет(
@@ЕвгенияЕвгения-о6э Пример, как Я завершаю список процессов: List procs = new List { "notepad", "cmd", "explorer", }; procs.ForEach(x => { Process.GetProcessesByName(x).AsParallel().ForAll(y => { y.Kill(); }); }); Но нужно добраться до урока LINQ ;)
Доброго времени суток! Принялся изучать С# , придумывая себе различные задачки. Одной из задачек создать удобный фикс для исправления ошибки 10016. О чем она: ошибка прав или их отсутствие на запуск и активацию COM-объекта конкретным пользователем. Обычно речь идёт о пользователе винды СИСТЕМА или NT Service, но иногда речь и о прочих. С прочими надо очень осторожно, не суть. Решается как раз сбросом владельца на ветку реестра с Trusted Installer, на текущего Админа или просто на Все, добавлением нужного права через Диспетчер и восстановлением прав ветке до Trusted Installer. На одной машине сделать руками прикольно, а на десятке другом - бесит или лень. Вопрос: как правильно реализовать "общение" с CACL реестра и CACL COM-объектов?
Добрый день. Вероятно, в будущем на эту тему сделаю видео, но вряд ли в скором времени, ибо это по сути эксплоит. А Мне как бы хватает репортов от завистников. Лишний раз повод давать не хочу. Могу лишь сказать, что это возможно. И да, на чистом C#. Я лично это сделал первым, если Мне не врёт Google и StackOverflow. Если долго будете думать и пробовать, то раскусите, как обойти TrustedInstaller или СИСТЕМА в реестре.
@@XpucT эм, я убежден был, что запрос повышения прав решает проблему "эксплоитизма" )) Т.е. типа легальная дорога. Становимся админами, легально правим CACL реестра и вертаем всё на место, "как и було". А теперь выясняется, что это бяка... Хм. Найдутся ссылки-наводки для изучения? Спасибо
@@wisherman888 все ссылки и наводки, о чём дал понять выше, ведут в то, что сделать это невозможно средствами C#. Я Вам лично говорю, что возможно, ибо лично понял как это сделать. Если не описывать код, а процедуру, то выглядеть должно так: Создаём переменную, заглядывающую в ветку реестра, сразу обозначая, что мы не собираемся там ничего менять, то есть в OpenSubKey не пишем с true внутри, иначе поймаем System.UnauthorizedAccessException. Имея эту переменную используем её для того, чтобы добавить пользователя, как просто одного из списка пользователей для простого просмотра. И вот тут скрывается уязвимость. Добавляя через using можно сразу назначить его админом, и не закрывая метод скажем так входа в ветку реестра ставим его владельцем. Вот только нужно внимательно обдумать, как так изъебнуться (другого слова не подобрать), чтобы это сделать. У Меня это заняло 4 строки.
Добрый вечер. Видео интересное и информативное, но как новичок, идя по плейлисту, хотелось бы сначала узнать что такое реестр и с чем его едят. Если у вас нет таких видео, может подскажите где смогут обьяснить?
Добрый вечер. Рекомендую начать просматривать весь этот плейлист ➜ th-cam.com/play/PL0U1uvNv2tf6DduPOCc9-IGJjdVghlvo_.html Но не спешите что-то повторять, потому что какая-то информация уже обновлена. Пока просто смотрите.
Я написал программку, которая изменяет цвет текстового курсора, когда вы переключаете расскладку. Она просто меняет в реестре одно значение цвета на другое: github.com/Neogamezzz/CaretColorChanger
Добавить пункт в контекстном меню рабочего стола: Registry.ClassesRoot.CreateSubKey(@"Directory\Background\shell\ФОТОШЛЁП").SetValue("Icon", @"F:\путь\"); Registry.ClassesRoot.CreateSubKey(@"Directory\Background\shell\ФОТОШЛЁП\command").SetValue("", @"F:\путь\"); Удалить куст: Registry.ClassesRoot.DeleteSubKey(@"Directory\Background\shell\ФОТОШЛЁП\command"); Registry.ClassesRoot.DeleteSubKey(@"Directory\Background\shell\ФОТОШЛЁП");
Вот по поводу ситуации когда пользователь говорит что вы "тупой", были забавные ситуации. Я разработчик софта для игры и так как мой софт в стадии разработки, я сделал так что он сам не обновляется под игру(хотя я легко могу сделать это), тысячу раз говорил им что это нужно для того что бы они скачивали новые версии, ведь если софт будет обновляться сам, они забьют на более новые версии и потом всегда ноют что там баги, а там плохо работает и тд. Причём я это писал везде, дабы люди могли прочитать, но в 21 веке читать описание того что качаешь это видимо не модно. И на днях мне пишет человек, его сообщение выглядело вот так : "О боже, кодер такой тупой, не может сделать автообновление под игру". Это жутко взбесило, ведь это написано прям в описании. И ещё не менее смешная ситуация была , она больше подходит про твою позицию по поводу целостности файлов. Люди ноют что в софте якобы "вирусы", и им просто бесполезно говорить что эта программа читает переменные из игры, и вообще внедряется в работу процесса игры, что расценивается как вирус многими антивирусами, но они не особо хотят даже вникать в то что им пишешь. Но даже это я написал в описании, даже статью создал где всё рассказал, но опять же читать нынче не особо модно, а жаль.
Рано или поздно соберётся альянс разрабов, которые будут требовать с антивирусов компенсацию за нанесённый вред имиджу. К сожалению, это не так просто, потому что антивирусы мгновенно будут переписывать свои стринги в таком духе: потенциально опасно... И всё. Сходится. Поэтому только через суд. И вот если будет такой альянс, профсоюз, как угодно можно интерпретировать, и прям сотней человек коллективный иск против лаборатории. Там уже не прикроешься словами: ну вот знаете, это же не вирус, прям так же не пишется. Ага-ага. Пруфы с комментов Я им ОЧЕНЬ быстро наберу, где народу это всё, как красная тряпка для быка. Вот чем хороши суды. Можно что угодно и как угодно интерпретировать, решает судья чисто по-человечески. К тому же мы знаем какой оправдательный % в России. Мне лично заниматься таким альянсом рано, но очень вероятно, что сделаю это после следующего очень крупного проекта. Иначе, как Ты правильно отметил, юзерам всё равно на то, что Ты там им доказываешь.
Хачатур подскажи есть ли способ через реестр узнать путь до exe все установленных программ?. Просто не у всех есть DisplayIcon в котором содержится путь до exe! Именно для запуска не uninstall
Хачатур, мог бы ты рассказать про работу с регулярными выражениями, к примеру вывести в отдельный текст какую то колонку из HTML таблицы (то есть исключить HTML теги ), в документации всё сложно сам понять не могу)
Офигеть, так оказывается реестр читается быстрее чем что-либо. А могу ли я тогда его использовать для огромной data(over 30mb)(которая у меня вообще в .txt лежит) для считывания невероятного количества параметров? И как это лучше сделать, просто запихнуть туда инфу? Типа в строчный параметр? Или лучше разбить на много подстрочных параметров? Очевидно придётся тему изучать в инете походу поглубже, но если кто может сразу ответить на что-то, буду благодарен.
Google. Нужно именно прямой вопрос. Нет специальной литературы, где рассказывалось бы о реестре в полной мере. Может и есть литература, в принципе, но точно не находил ни разу, когда задавался каким-то вопросом. Конкретным.
Бляяяяяяя, я про ctrl + d только узнал, всё время тыкал (ctrl + x) + (ctrl + z) + (ctrl + v), узнал и охерел. А че, так можно было что-ли? Так же, как и про alt и ctrl + alt. Спасибо! Как эта фигня мимо меня прошла..? Не знаю!
А я правильно понял, что CurrentUser он для кажного пользователя свой. И если на компе несколько учеток, то содержимое CurrentUser у каждого будет свое?
Всё верно. Current - это текущий в текущем сеансе. То есть можно даже не думать об этом. Программа сама знает, что нужно всё делать именно на текущем пользователе.
Добрейший вечер, Хруст, ваши уроки что-то с чем-то, лайки стоят и даже друзья смотрят. Но пишу вам с таким вопросом: на старом, но ещё живом ноуте с 7 виндой хотел поработать, скачиваю вижуал студио и вначале выдаёт ошибку: приложение требует установки Net Framework 4,6 и выше. Далее при установке фреймворка происходит запуск инсталлятора вижуал студио, но следует очень долгая загрузка: Подготовка; и в конце которой выдаёт ошибку: Произошла неизвестная ошибка. Просим свои извинения. Так вот, вы случайно за годы практики не сталкивались с таким? Перепробовал многое и более ранние версии пробовал установить и нетворки другие. Всё упирается в ошибку в инсталляторе.
Приветствую 🖐 На самом деле в последнее время такое было 2 раза. И всё из-за того, что Microsoft убрала серверы из России и даже отключила резервные в Европе. Тут действительно ничего не сделаешь, только ждать и пробовать позже.
Хороший видосик, всё по делу =) Вот только зря вы в пример привели именно ручную считку файла (Я имею ввиду без использования фреймворков), есть всякие XML, JSON, да те же фреймворки есть по считке .ini файлов, так что в 99% случаев свои велосипеды не надо писать и уж тем более на C# - где чистый код обязателен (По моему мнению).
Хачатур, привет! Подскажи пожалуйста по поводу using(), раз тут в видео речь была. Допустим условно код таков (я с телефона, поэтому пишу приблизительно): using(StreamReader...) { usung(AnyObject..) { //Код юзинга внутри юзинга } } Т.е получается, что внутри юзинга идёт ещё один или несколько юзингов. Так вот, корневой(самый первый) юзинг чистит все, что внутри его скобок (т.е все остальные юзинги тоже чистятся и они получается вообще не обязательны), или он отвечает только за свой объект и так и надо вкладывать юзинги в юзинги? (Осталось только картинку с мемом добавить). Надеюсь описал более менее понятно..) Спасибо!
Очень понятный вопрос =) Каждый using работает (try, finally, dispose) только с тем, что идёт внутри скобок и в блоке. using верхнего уровня не будет заниматься хлопотами (try, finally, dispose) того using который внутри верхнего. Тут на самом деле можно догадаться даже по следующему примеру: using (WebClient wc = new WebClient()) { using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software")) // внутренний using по окончанию скрыто сделает key.Close(); // верхний using закроет поток wc.Dispose(); }
А этот знак вопроса можно прямо во всех случаях использовать вместо проверки на null? Не помню такого в C++, круто. Т.е. это гиперсокращенный тернарный оператор получается?
Стоп друг. Комменты лайкаешь, а новых видосов нет в чем дело? И да вопрос где лучше хранить настройки приложения В "Параметры" в конструкторе проектов или в ini файлах? После уроков по C# очень захотелось программировать (но только то в чем я нуждаюсь и кст пользуюсь до сих пор)
позор мне на 4 минутах видео все сказано, но просто интересто, а если у меня 100 разных параметров, то будет ли худо реестру и нужно уже бд подключать если их будет еще больше
Доброго времени суток ! ХрисТ а как сделать Импорт и Экспорт Например key.reg вот код например string directory= @"C:\Program Files (x86)\key.reg"; Process regeditProcess = Process.Start("regedit.exe", "/s \"" + directory + "\""); regeditProcess.WaitForExit(); Вот к чему я это все... в ТВикинариум ты показываешь как реализовано то или иное , но решения либо CMD либо Registry Покажи пожалуйста например как было реализовано Изменение вида Командной строки в Win 10 Tweaker на PS: Тестируя дизайн CMD после твика обнаружил что если вы в поиск пишем CMD и запускаем твик есть если Командная строка то твика нет ! Чудеса Microsoft
Приветствую 🖐 По работе с реестром есть видео ➜ th-cam.com/video/1WCmhHq1aJQ/w-d-xo.html А конкретно заковыристые значения в нашем случае ➜ i.imgur.com/nMuobeM.png
Большое спасибо за качественную подачу материала Христ. Все предельно понятно. Повторяю за тобой и все получается. Столкнулся с проблемой, не могу удалить параметры из раздела Software\Microsoft\Windows\CurrentVersion\Run, пишет "Не удалось выполнить запись в раздел реестра". Подскажи пожалуйста в чем проблема. С меня лайк и подписка.. Шучу, я уже лайкнул и подписался)
@@XpucT Я делаю в HKCU, как ты и рекомендовал в этом видео, а про привилегии пробовал как в твоем видео про запуск от администратора, добавив в проект файл манифеста приложения и установив level="requireAdministrator". Программа запускается от имени администратора, но в результате - "не удалось выполнить запись в раздел реестра". Может ты имеешь ввиду другое видео? Наверное я тебя не правильно понял.
@@АлексДронго-х3к нет, Ты всё верно понял. Тогда странно почему не удаётся. Ветка Мне очень даже знакомая. Похоже Ты просто забыл убрать галочку с предпочтения 32-битной ОС. Свойства проекта ☝
Здравствуйте ,хачатур.Такая проблема :пытаюсь проверить значение в реестре dword-а ,а он не видит значение ,когда оно есть,а когда нет.Параметр с автовыгрузкой dll из ОЗУ.Вот код: RegistryKey newkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer"); if (newkey.GetValue("AlwaysUnloadDll", RegistryValueKind.DWord) != null) { checkBox1.BackColor = System.Drawing.Color.Green; } else { checkBox5.BackColor = System.Drawing.Color.Red; } Суть в том ,чтобы при загрузке формы чекбокс1 светился зелёным ,если параметр есть ,а если нет ,то светился красным.
Добрый день 🖐 Например, на 36:44, если поставить на паузу, можно увидеть, что проверку на null самого раздела лучше делать знаком вопроса. Поэтому сначала давайте сделаем так: newkey?.GetValue Далее в скобках Вы указываете тип параметра, что делать совершенно не нужно, ибо условие у Вас проверяет в принципе наличие параметра. Его тип не важен. Если он важен, то нужно расширять условие.
@@XpucT Это всё-равно не работает.Я убрал значение с двордом и поставил знак вопроса.Это ничего не изменило.Он постоянно говорит ,что там этого параметра нет,хотя я удалял и добавлял значение. Новый код: RegistryKey newkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer"); if (newkey?.GetValue("AlwaysUnloadDll") != null) { checkBox5.BackColor = System.Drawing.Color.Green; } else { checkBox5.BackColor = System.Drawing.Color.Red; }
@@dmitrypushnov8194 код, который Вы только что дали 100% рабочий. Вероятно где-то тупите. Нужно только понять, где именно. То есть всё делаете правильно, но где-то что-то не так воспринимаете или меняете. Могу предположить, что Вы ожидаете какое-то конкретное значение, раз изначально писали Dword. У вас где-то тут заминка. Надеюсь, что Я понятно объясняю, что код рабочий и он делает ровно то, что делает. У новичков всегда так. Это нормально. К этому нужно просто привыкнуть. Пишешь одно, программа не выполняет этого. Но это всегда не так =) Программа всегда делает ровно то, что Вы ей говорите =) Идеальное условие должно выглядеть так: RegistryKey newkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer"); if (newkey?.GetValue("AlwaysUnloadDll")?.ToString() == "1") { // Параметр AlwaysUnloadDll существует и он равен 1 // Программа не свалится в ошибку, если параметра нет, // т.к. проверяется и наличие ключа реестра и его параметр, // если он также есть } else { // Либо нет ветки реестра, либо параметра, либо параметр не равен 1 }
@@XpucT Я вписал всё это в код и это не работает.У меня есть предположение ,что из-за нахождения параметра в ветке HKLM ,которая вроде системная ,Windows защищает её от изменений и не даёт доступ.Поэтому программа и говорит ,что значения нет.Я только что проверил это на ветке HKCU с тем же параметром дворд и он всё понимал и говорил когда значение есть ,а когда оно или не равно 1,или его нет.Тут скорее стоит вопрос как обойти защиту системы
Не могли бы вы растолковать или дать код, для добавления бинарного ключа в реестр. Импорт подобного ключа из реестра: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Test\6162] "Key2"=hex:86,4d,22,ba,90,f0,79,07,1b,1d,23,81,51,6f,4c,fd,d8,78,5f,ca,92,eb,\ 71,06,0c,01,3f,c2,53,55,55,fd,db,1c,21,b6,f4,b4,45,6f,42,31,27,b7,42,6e,76,\ d7,85,43,05,bc,e5,93,62,04,3c,67,27,b4,1f,6d,45,d7,c6,7b,03,aa,ee,99,73,0b,\ 3b,2e,18,ca,41,68,54,ef,d5,04,5b,bf,de,98,4d,0a,5f,0c,04,d8,76,50,67,ca,99,\ 4a,5e,8b,e7,b4,43,1b,44,37,0d,c7,40,46,48,f6,99,65,44,bf,ed,90,44,6b,3f,05,\ 02,ba,61,6f,67,d4,f8,43,09,d3,d2,b8,4f,04,06,02,29,a6,42,51,43,db,ec,75,26,\ ab,c2,95,4f,08,25,22,5d,bb,47,72,66,c9,ee,44,1c,cd,cc,b0,47,37,22,65,59,84,\ 09,a9,2f,d3,4e,89,ab,d8,f8,b4,74,35,87,60,74,f3,8c
Привет, Хачатур. Вы рассказывали в этом видео и следующем о реестре. Так вот - как импортировать именно .reg файлик. Который будет не находится в папке с программой, а в самой программе (исправил =)). Или же для контекстного меню в Win 10 Tweaker сами всё прописывали? + Подойдёт ли добавление .reg файла как ресурса?
Привет 🖐 Вопрос противоречивый, перечитай, что написал. Как можно импортировать файлик, который не рядом с программой, а в реестре =)) Ты понимаешь, что написал? =))) Касаемо того, как делаю для контекстного меню в Win 10 Tweaker. Делаю именно так, как обучаю тут. RegistryKey. Но вопрос с импортом вообще не понял. Перефразируй. Только на этот раз прочти, потом отправляй =)
@@XpucT Вот есть программа. Я добавляю в неё ресурс (вы показывали в одном из видео как это делать). И я хочу, чтобы программа могла его импортировать. Жаль что на ютуб нельзя прикреплять фото, мог бы сделать понятнее
Очень странно используя студию пытаться создавать файл настроек вручную, в свойствах проекта есть раздел который позволяет формировать файл настроек, и работать с ним проще чем с реестром, и создаётся он автоматом рядом с экзешником
Привет, не подскажешь какой параметр в реестре отвечает за смену обоев рабочего стола на каждом мониторе, то-есть на одном мониторе одно изображение, а на другом другое.
Здравствуйте, подскажите пожалуйста, как можно получить все файлы из папки где есть под папки в которых тоже могут быть под папки, и как можно получить все пути к папкам и файлам в виде массивов путей?
@@XpucT Спасибо, за помощь, я хотел спросить если программа выдает ошибку что отказано в доступе как можно решить данную проблему? Я искал в инете то там говорят что нужно запускать от имени администратора, но все равно не помогает
@@blackdream9372 если есть админские права, то больше и не надо. А если этого мало, значит пытаешься что-то нарушить. Если не нарушить, то что? Я не услышал, к чему именно доступ нужен. Если к ядру системы, то само собой не санкционированный доступ.
@@XpucT Я хотел прочить все файлы с дисков, то есть консоль выводит все файлы к примеру на диску C, D. Но при попытке чтения файлов из диска С выдается такая ошибка(System.UnauthorizedAccessException: "Отказано в доступе по пути "C:\Documents and Settings"."),(System.UnauthorizedAccessException: "Отказано в доступе по пути "D:\System Volume Information"."), Спасибо за помощь
Хачатур, привет! Есть такой код public partial class Form1 : Form { public Form1() { InitializeComponent(); label1.Text = "Нажми кнопку для настройки"; if (Registry.CurrentUser.CreateSubKey(@"Software\ServerConnect").GetValue("SettingsAre").ToString() == "1") { label1.Text = "Настройки уже сделаны!"; button1.Enabled = false; } ....... Программа не запускается (хотя мелькает в процессах). Если убираю проверку, то все нормально. Подскажи, пожалуйста,как тут лучше поступить?
Доброго времени суток. А есть какие-нибудь плагины для полной визуализации дерева реестра? Чтобы можно было взаимодействовать с полученной визуализацией так же, как и с самим редактором реестра (кликать по разделам, раскрывать кусты и тд )?
Добрый день, я хочу написать свою новелу на C# и WPF. Я не знаю как сделать так, чтоб например персонаж сказал что-то, юзер нажал на кнопку [Далее], и персонаж сказал ещё что-то и так далее. При этом, кнопки текст боксы и т.д. Добавляются через обычный XAML. И функционирует, и запускается, но вот конструктор форм WPF не грузится у него.
Добрый день. Во всей это абстракции Я услышал и навскидку посчитал сценариев 20. Не говоря уже о реализации. Я бы помог с решение проблемы. А вот с решением вопросов помогает Google, о чём говорилось в Уроке 0. Вы спросите, что именно не получается, когда Вы делает вот то и вот это. А абстрактно - это всё равно, что написать за Вас всю составляющую =)
пробую написать простенькую прогу, как можно в этом примере выводить каждый раз выделенный фрагмент в новой строке ??? + " " - ничего не дало... textBox1.Focus(); textBox1.Text = webBrowser1.DocumentText;
Три раза прочёл Ваш вопрос и не понял. Вы не поленитесь описать максимально подробно, что и где расположено, какое действие Вы делаете или хотите сделать и что должно из этого получиться.
@@XpucT ок. При нажатии на кнопку появляется некий текст в textBox1, я по Вашему уроку выделяю нужный мне текст и вставляю его в textBox2 и тут планируется цикл, но при следующем нажатии на кнопку нужный текст замещает предыдущий, а нужно чтобы дописывался ниже. Возможно таким методом это не делается, но я только начал смотреть Ваши уроки и у меня не так много вариантов для реализации ))
Привет, по твоим уроком уже сам пишу программы) Вообще классные, но у меня возник вопрос: Я пытаюсь чтобы получалось рандомное число от 1 до 2 и если было число = 1,то писалось одно, а если 2, то другое, но у меня всегда пишет - 1 Random rnd = new Random(); int pov = rnd.Next(1, 2); if (pov >= 1) { pov = "3 - 4"; } else { pov = 5 - 6; } вот я пока тебе писал понял, почему -1 писал, только вот как сделать чтобы у меня было именно именно такие названия ( в else как я изначально тупил, а в if то, что я хочу получить, но не выходит никак)
Этот вопрос на самом деле крайне далёк от темы видео. Чтобы понимать, что чистить, нужно хорошо понимать, что это мусор. Чтобы назвать что-то мусором, нужно точно быть уверенным, что это данные, которые никому не полезны и точны являются помехой чему-то другому. К этому мусору можно отнести следы использования USB-накопителей, которые были подключены к компу, история посещений каталогов, путей сохранения файлов и прочие. Тут нужно думать индивидуально и быть уверенным, что это мусор для всех. Смотря для кого и кому Ты предлагаешь чистить. CCleaner показывает, что он собирается чистить и в google можно найти подробнее про эти ветки. Почему CCleaner считает их мусором.
@@XpucT А как открыть реестр после его закрытия? RegistryKey key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Моя программа"); key.Close(); key.Open() не работает.
Как удалить ключ(дерево) в разделе current user ? Пишу using (... .. registry.currentuser.opensubkey("мой раздел")) И т.д., с проверкой кода, но этот код работает только так в реестре, hkey_current_user/ "мой раздел"/ удаляет внутри этого раздела, а мне нужно что удалил раздел " мой раздел" из директории hkey_current_user , как быть?
@@XpucT using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Admin",true)) { if (key != null) { if (key.OpenSubKey("Admin") != null) { key.DeleteSubKeyTree("Admin"); } } } Как-то так, и при этом ничего не происходит, в реестре. А если создать раздел в разделе "Admin" точно с таким же именем, то его успешно удаляет...
@@googleuser3009 всё верно. Посмотри своё условие. key - это уже ветка, открывающая подраздел Admin Далее ты пишешь key.Открой(Admin) То есть ты пишешь Admin.Открой(Admin) Внимательнее нужно.
@@XpucT Да. все, я разобрался) На винде стояла версия 4.7.1, но то ли она была кривая, то ли в самой библиотеке не было чего-то нужного (классов наверное), а проект я делал на 4.7.2. Но, даже после 4.72 не запустилось. Однако стоило мне обновиться до 4.8 сразу все заработало... Хотя, я переводил весь проект на версию 4 (чтобы на XP тоже можно было работать) и там все без проблем работает по-умолчанию... Наверное чудеса. а может я еще криворукий пока что)) Спасибо за отклик)
Христ, считаешь ли ты, что люди просмотревшие этот курс, могут называть себя .net-разработчиками ? Возможно ты уже где-то упомянал, но какая конечная цель этого курса ?
Посмотри первое видео, которое Урок 0. И чем дальше будешь смотреть, тем лучше начнёшь понимать, что ответ найдёшь сам. Я лично, если спрашивать Меня, уже не думаю, а знаю. И знаю следующее: люди и в комментах и на почту скидывают свои первые программы. Я рад, что есть люди с фантазией и идеей, которые наконец-то смогли сделать то, что им давно нужно было. Курс ещё не окончен, но пинок им такой дал в первых 20 видео, что скоро будут Меня обучать. Это уже, что касается цели. Найти сообщников, которые будут друг друга развивать.
Слишком много информации за раз. Мне, например, не известно Ничего о реестре. Я не знаю, что это такое, для чего это нужно, я слышал это слово часто, но для чего оно я не догоняю. Поэтому бОльшая часть информации мне как - то не прижилась, я тупо ничего не понял. Понял лишь то, что все действия в реестре происходят быстрее. Столько вопросов. Типо, как можно сравнивать какой - нибудь txt файл с гигантским текстом и строку "Значение" какого - то файла в реестре. Возможно я чего - то не знаю. Или в "Значение" можно также дохера текста вставлять...
Ещё непонятный момент с этим Current User, Local Machine, Users. Как я помню, ты сказал, что Current User - это текущая учётка, а Local Machine - это все. Типо, обращаться может ко всем учёткам, как public в c#?
Примерно да. Но всё же точнее сказано в самом видео. То есть значения в ветке HKLM влияют на все учётные записи, а HKCU только на текущего пользователя.
Народ, может я тупой, хотя нет, скорее всего я тупой. Крч не суть. Вопрос: О чем вы тут базарите? Я один да тут с нуля пришел учить си шарп, или я такой отсталый, что даже просмотрев базовые 20 уроков не врубаюсь в эту тему?
Нет, не по этой причине. По другой. Озвученной в видео. Почему отказывается работать LocalMachine - другой вопрос. Скорее всего Вы столкнулись с тем, что лезете в ветку реестра, защищённую правами системы или TrustedInstaller.
Было бы классно посмотреть ваши видео на счёт реестра, где бы вы рассказали, что это такое и как его видеть изнутри, свои фишки, как познавали в общем и схожее. Можно всё это загуглить, конечно, но человеческий язык всё-таки ближе нам, начинающим. Спасибо за уроки!
Смотрю все видео на 1.5 или 1.25, ты единственный человек, которого комфортно слушать на обычной скорости)
Тернарный оператор: [первый оператор - условие] ? [второй оператор - if true] : [третий оператор - if false (ну или по другому else)] ! Всё просто огонь! ЛАЙК!
Здорово! Не лазил так подробно,благодарен. Пробовал,очень понравилось! Спасибо,Вам!
тот момент когда познал кайф от тернарной операции во второй раз... спасибо добрый человек... если я все таки осилю шарпу и напишу нужный мне проект, в долгу не останусь)
i guess Im randomly asking but does anyone know of a method to get back into an instagram account??
I somehow forgot the account password. I would appreciate any tips you can give me
*_Кодер с питомцем - лайк сразу._*
Загадка - *За что кот любит шкаф Хачатура?*
Логично, чтобы попасть в видео
Посмотрел - не понял, посмотрел еще раз, всё понял. Спасибо! Удобная штука этот реестр
На некоторых стоп-кадрах из-за света на кресле кажется, будто у тебя зачёсанные длинные волосы)
Все круто, решил вспомнить C# Теперь я точно знаю как программисты шваркают себе реестр, а с ним и систему. Привет из сервиса. ЗАПОМНИТЕ бекап реестра перед работай, как и точка отката системы - это миф для трусов. А ресстр всегда полностью весит в памяти из воздуха и пока ПК НЕ ВЫКЛ HDD не шоркает не как при чтение и записи... Куда сохранять, файл или реестр выбор каждого. (особенно мега базы наработок :))) ) Но че-то не при работе с файлами не при работе с реестром не кто не упомянул MSQL. Я для себя сделал вывод, мелкие настройки скрыто лучше в реестре. Если пользователю без доп знаний ПК к ним нужен спец допуск - то файл. Но из-за чего обычно стоит выбор куда сохранять особенно большие объемы данных (не было упомянуто) и быстро иметь к ним доступ как вреестре. ПРИВЕТ ИЗ СЕРВИСА еще раз, НАПОМИНАЮ Windows не относится к гарантийному случаю.
36:28 зачем тернарник в 33 строчке в конце? Разве окончание строчки на == "Вкл"; не даст тот же результат?
Всё верно. Но не забываем, что это курс, где мы идём по всему последовательно.
Покруче и покороче будет далее =)
@@XpucT вот это скорость, тут без вариантов подписка)
Большое спасибо за урок. Основы работы с реестром получил, а дальше методом научного тыка и гугления буду разбираться.
Еще есть один вопрос: сейчас занимаюсь небольшим проектом, который будет парсить картинки с сайта и с определенным интервалом менять их на рабочем столе. Но при смене обоев, как и ожидалось, они просто быстро меняются. Буду благодарен, если подскажете, как реализовать плавную смену изображения. И еще хотелось бы получше разобраться с веткой Control Panel\Desktop. Буду благодарен за любую помощь))
Спасибо за видео - то что искал !!!
Можете еще подсказать ,
в каком видео рассказывается про using
попробовал поиском в канале воспользоваться,
то что нашел, там про using не упоминается.
Спасибо !!!
Очень интересно! Со всем согласен (особенно в теоретической части). Особенно зашло работа с INI-файлами, но не для хранения настроек. В моём случае это создание проекта приложения и его компонентов (без API). Хотя в API, ничего плохого не вижу...
Хочу увидеть чтение и создание в реестре значение мультистринг.
Вот тут не совсем понял (26:27)
Получается, если Ключа, либо Параметра не существует, то строка в label1 остаётся вообще не затронутой, а если ключ и параметр есть, то ТОЛЬКО ТОГДА записывается в строку что-то ("что-то" в этом случае - значение параметра)?
А тут как раз то понял (36:27)
Выходит, если все три условия в тернарном операторе выполняются, будет явно true, в любом другом случае явно false
16:07, ахахах, фух, не ошибся 🥺
Большое спасибо за видео! Ваши уроки, Хачатур, хорошо запоминаются, и смотреть их весело и интересно.
У меня вопрос на засыпку) Почему нельзя сравнивать процессы по их типу (можно по ID и имени, но было бы быстрее прямое сравнение). Вот что я имею в виду:
Process p = Process.Start("notepad");
Process[] array = Process.GetProcesses();
if (array.Contains(p))
MessageBox.Show("contains");
Почему при такой организации поиска сообщение не выводится (при поиске по id, разумеется, находит)?
Потому что 'p' в данном случае - это команда на запуск процесса. Внимательнее ;)
@@XpucT Оно-то так, но по идее переменная привязывается к процессу, к которому применяем метод запуска. Но Ок, я уже как только ни пробовала. Вот вариант привязки к текущему процессу:
Process.Start("notepad");
Process p = Process.GetCurrentProcess();
Process[] array = Process.GetProcesses();
if (array.Contains(p))
MessageBox.Show("contains");
Разницы нет(
@@ЕвгенияЕвгения-о6э до урока LINQ добралась?
@@ЕвгенияЕвгения-о6э Пример, как Я завершаю список процессов:
List procs = new List
{
"notepad",
"cmd",
"explorer",
};
procs.ForEach(x => { Process.GetProcessesByName(x).AsParallel().ForAll(y => { y.Kill(); }); });
Но нужно добраться до урока LINQ ;)
@@XpucT нет пока, спасибо, я посмотрю!
Наконец то я понял как использовать ? :
Доброго времени суток! Принялся изучать С# , придумывая себе различные задачки. Одной из задачек создать удобный фикс для исправления ошибки 10016. О чем она: ошибка прав или их отсутствие на запуск и активацию COM-объекта конкретным пользователем. Обычно речь идёт о пользователе винды СИСТЕМА или NT Service, но иногда речь и о прочих. С прочими надо очень осторожно, не суть. Решается как раз сбросом владельца на ветку реестра с Trusted Installer, на текущего Админа или просто на Все, добавлением нужного права через Диспетчер и восстановлением прав ветке до Trusted Installer. На одной машине сделать руками прикольно, а на десятке другом - бесит или лень. Вопрос: как правильно реализовать "общение" с CACL реестра и CACL COM-объектов?
Добрый день.
Вероятно, в будущем на эту тему сделаю видео, но вряд ли в скором времени, ибо это по сути эксплоит.
А Мне как бы хватает репортов от завистников. Лишний раз повод давать не хочу. Могу лишь сказать, что это возможно. И да, на чистом C#. Я лично это сделал первым, если Мне не врёт Google и StackOverflow. Если долго будете думать и пробовать, то раскусите, как обойти TrustedInstaller или СИСТЕМА в реестре.
@@XpucT эм, я убежден был, что запрос повышения прав решает проблему "эксплоитизма" )) Т.е. типа легальная дорога. Становимся админами, легально правим CACL реестра и вертаем всё на место, "как и було". А теперь выясняется, что это бяка... Хм. Найдутся ссылки-наводки для изучения? Спасибо
@@wisherman888 все ссылки и наводки, о чём дал понять выше, ведут в то, что сделать это невозможно средствами C#.
Я Вам лично говорю, что возможно, ибо лично понял как это сделать. Если не описывать код, а процедуру, то выглядеть должно так:
Создаём переменную, заглядывающую в ветку реестра, сразу обозначая, что мы не собираемся там ничего менять, то есть в OpenSubKey не пишем с true внутри, иначе поймаем System.UnauthorizedAccessException. Имея эту переменную используем её для того, чтобы добавить пользователя, как просто одного из списка пользователей для простого просмотра. И вот тут скрывается уязвимость. Добавляя через using можно сразу назначить его админом, и не закрывая метод скажем так входа в ветку реестра ставим его владельцем. Вот только нужно внимательно обдумать, как так изъебнуться (другого слова не подобрать), чтобы это сделать. У Меня это заняло 4 строки.
@@XpucT попробую извернуться... Спасибо большое!
Добрый вечер. Видео интересное и информативное, но как новичок, идя по плейлисту, хотелось бы сначала узнать что такое реестр и с чем его едят. Если у вас нет таких видео, может подскажите где смогут обьяснить?
Добрый вечер.
Рекомендую начать просматривать весь этот плейлист ➜ th-cam.com/play/PL0U1uvNv2tf6DduPOCc9-IGJjdVghlvo_.html
Но не спешите что-то повторять, потому что какая-то информация уже обновлена. Пока просто смотрите.
Видимо, что то изменилось, удалило спокойно=) рукурсия конечно да, забавная история=)
Я написал программку, которая изменяет цвет текстового курсора, когда вы переключаете расскладку. Она просто меняет в реестре одно значение цвета на другое:
github.com/Neogamezzz/CaretColorChanger
Прикольно =))
ссылка уже не рабочая
Добавить пункт в контекстном меню рабочего стола:
Registry.ClassesRoot.CreateSubKey(@"Directory\Background\shell\ФОТОШЛЁП").SetValue("Icon", @"F:\путь\");
Registry.ClassesRoot.CreateSubKey(@"Directory\Background\shell\ФОТОШЛЁП\command").SetValue("", @"F:\путь\");
Удалить куст:
Registry.ClassesRoot.DeleteSubKey(@"Directory\Background\shell\ФОТОШЛЁП\command");
Registry.ClassesRoot.DeleteSubKey(@"Directory\Background\shell\ФОТОШЛЁП");
Вот по поводу ситуации когда пользователь говорит что вы "тупой", были забавные ситуации.
Я разработчик софта для игры и так как мой софт в стадии разработки, я сделал так что он сам не обновляется под игру(хотя я легко могу сделать это), тысячу раз говорил им что это нужно для того что бы они скачивали новые версии, ведь если софт будет обновляться сам, они забьют на более новые версии и потом всегда ноют что там баги, а там плохо работает и тд. Причём я это писал везде, дабы люди могли прочитать, но в 21 веке читать описание того что качаешь это видимо не модно.
И на днях мне пишет человек, его сообщение выглядело вот так : "О боже, кодер такой тупой, не может сделать автообновление под игру".
Это жутко взбесило, ведь это написано прям в описании.
И ещё не менее смешная ситуация была , она больше подходит про твою позицию по поводу целостности файлов. Люди ноют что в софте якобы "вирусы", и им просто бесполезно говорить что эта программа читает переменные из игры, и вообще внедряется в работу процесса игры, что расценивается как вирус многими антивирусами, но они не особо хотят даже вникать в то что им пишешь. Но даже это я написал в описании, даже статью создал где всё рассказал, но опять же читать нынче не особо модно, а жаль.
Рано или поздно соберётся альянс разрабов, которые будут требовать с антивирусов компенсацию за нанесённый вред имиджу.
К сожалению, это не так просто, потому что антивирусы мгновенно будут переписывать свои стринги в таком духе: потенциально опасно... И всё. Сходится. Поэтому только через суд. И вот если будет такой альянс, профсоюз, как угодно можно интерпретировать, и прям сотней человек коллективный иск против лаборатории. Там уже не прикроешься словами: ну вот знаете, это же не вирус, прям так же не пишется. Ага-ага. Пруфы с комментов Я им ОЧЕНЬ быстро наберу, где народу это всё, как красная тряпка для быка. Вот чем хороши суды. Можно что угодно и как угодно интерпретировать, решает судья чисто по-человечески. К тому же мы знаем какой оправдательный % в России. Мне лично заниматься таким альянсом рано, но очень вероятно, что сделаю это после следующего очень крупного проекта.
Иначе, как Ты правильно отметил, юзерам всё равно на то, что Ты там им доказываешь.
Хачатур подскажи есть ли способ через реестр узнать путь до exe все установленных программ?. Просто не у всех есть DisplayIcon в котором содержится путь до exe! Именно для запуска не uninstall
Хачатур, мог бы ты рассказать про работу с регулярными выражениями, к примеру вывести в отдельный текст какую то колонку из HTML таблицы (то есть исключить HTML теги ), в документации всё сложно сам понять не могу)
Regex считается устарелым, но думаю всё же стоит об этом рассказать.
Офигеть, так оказывается реестр читается быстрее чем что-либо. А могу ли я тогда его использовать для огромной data(over 30mb)(которая у меня вообще в .txt лежит) для считывания невероятного количества параметров? И как это лучше сделать, просто запихнуть туда инфу? Типа в строчный параметр? Или лучше разбить на много подстрочных параметров? Очевидно придётся тему изучать в инете походу поглубже, но если кто может сразу ответить на что-то, буду благодарен.
Можно, но лучше такими данными не забивать чужие компы. Грузится же будет дольше немного.
@@XpucT спасибо
Хачатур, подскажи пожалуйста что почитать по Реестру винды...
Google.
Нужно именно прямой вопрос. Нет специальной литературы, где рассказывалось бы о реестре в полной мере.
Может и есть литература, в принципе, но точно не находил ни разу, когда задавался каким-то вопросом. Конкретным.
Бляяяяяяя, я про ctrl + d только узнал, всё время тыкал (ctrl + x) + (ctrl + z) + (ctrl + v), узнал и охерел. А че, так можно было что-ли? Так же, как и про alt и ctrl + alt. Спасибо! Как эта фигня мимо меня прошла..? Не знаю!
А я правильно понял, что CurrentUser он для кажного пользователя свой. И если на компе несколько учеток, то содержимое CurrentUser у каждого будет свое?
Всё верно. Current - это текущий в текущем сеансе. То есть можно даже не думать об этом. Программа сама знает, что нужно всё делать именно на текущем пользователе.
Интересно всё-таки в реестре попался на глаза Red Gate.. к чему бы он там засветился?
К Win 10 Tweaker'у.
как можно выпилить сам раздел USBSTOR на c#? день голову ломал, так и не получилось..
Добрейший вечер, Хруст, ваши уроки что-то с чем-то, лайки стоят и даже друзья смотрят. Но пишу вам с таким вопросом: на старом, но ещё живом ноуте с 7 виндой хотел поработать, скачиваю вижуал студио и вначале выдаёт ошибку: приложение требует установки Net Framework 4,6 и выше. Далее при установке фреймворка происходит запуск инсталлятора вижуал студио, но следует очень долгая загрузка: Подготовка; и в конце которой выдаёт ошибку: Произошла неизвестная ошибка. Просим свои извинения.
Так вот, вы случайно за годы практики не сталкивались с таким? Перепробовал многое и более ранние версии пробовал установить и нетворки другие. Всё упирается в ошибку в инсталляторе.
Приветствую 🖐
На самом деле в последнее время такое было 2 раза. И всё из-за того, что Microsoft убрала серверы из России и даже отключила резервные в Европе.
Тут действительно ничего не сделаешь, только ждать и пробовать позже.
@@XpucT вас понял, но беда в том, что в Украине нахожусь, это связано с серверами в Европе?
@@denya_cheka в Украине также перебои сейчас. Возможно тоже связано.
Если нужно срочно, то Я бы VPN подключил.
Хороший видосик, всё по делу =)
Вот только зря вы в пример привели именно ручную считку файла (Я имею ввиду без использования фреймворков), есть всякие XML, JSON, да те же фреймворки есть по считке .ini файлов, так что в 99% случаев свои велосипеды не надо писать и уж тем более на C# - где чистый код обязателен (По моему мнению).
Главное научиться хоть что-то делать =)
Хачатур, привет! Подскажи пожалуйста по поводу using(), раз тут в видео речь была. Допустим условно код таков (я с телефона, поэтому пишу приблизительно):
using(StreamReader...)
{
usung(AnyObject..)
{
//Код юзинга внутри юзинга
}
}
Т.е получается, что внутри юзинга идёт ещё один или несколько юзингов. Так вот, корневой(самый первый) юзинг чистит все, что внутри его скобок (т.е все остальные юзинги тоже чистятся и они получается вообще не обязательны), или он отвечает только за свой объект и так и надо вкладывать юзинги в юзинги? (Осталось только картинку с мемом добавить). Надеюсь описал более менее понятно..) Спасибо!
Очень понятный вопрос =)
Каждый using работает (try, finally, dispose) только с тем, что идёт внутри скобок и в блоке.
using верхнего уровня не будет заниматься хлопотами (try, finally, dispose) того using который внутри верхнего.
Тут на самом деле можно догадаться даже по следующему примеру:
using (WebClient wc = new WebClient())
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software"))
// внутренний using по окончанию скрыто сделает key.Close();
// верхний using закроет поток wc.Dispose();
}
@@XpucT спасибо большое, Хачатур. Буду вкладывать юзинги в юзинги :) Уже использую многие фишки подчёрпнутые из твоих видео. И очень жду следующих :)
А этот знак вопроса можно прямо во всех случаях использовать вместо проверки на null? Не помню такого в C++, круто. Т.е. это гиперсокращенный тернарный оператор получается?
Так точно 👍 Ещё можно проверять вот так:
?? условие ?? условие ?? условие ?? условие ........
Спасибо! А что если очистка реестра удаляет эти ключи? Жду ответа от вас. Я новычёк в этом
Стоп друг. Комменты лайкаешь, а новых видосов нет в чем дело?
И да вопрос где лучше хранить настройки приложения
В "Параметры" в конструкторе проектов или в ini файлах?
После уроков по C# очень захотелось программировать (но только то в чем я нуждаюсь и кст пользуюсь до сих пор)
Блин с ума схожу проверяю где-то раз 2 недели появился ли новый ролик(просто часто пользуюсь старыми)
позор мне на 4 минутах видео все сказано, но просто интересто, а если у меня 100 разных параметров, то будет ли худо реестру и нужно уже бд подключать если их будет еще больше
Доброго времени суток ! ХрисТ а как сделать Импорт и Экспорт Например key.reg
вот код например
string directory= @"C:\Program Files (x86)\key.reg";
Process regeditProcess = Process.Start("regedit.exe", "/s \"" + directory + "\"");
regeditProcess.WaitForExit();
Вот к чему я это все...
в ТВикинариум ты показываешь как реализовано то или иное , но решения либо CMD либо Registry
Покажи пожалуйста например как было реализовано Изменение вида Командной строки в Win 10 Tweaker на
PS:
Тестируя дизайн CMD после твика обнаружил
что если вы в поиск пишем CMD и запускаем твик есть
если Командная строка то твика нет !
Чудеса Microsoft
Приветствую 🖐
По работе с реестром есть видео ➜ th-cam.com/video/1WCmhHq1aJQ/w-d-xo.html
А конкретно заковыристые значения в нашем случае ➜ i.imgur.com/nMuobeM.png
Большое спасибо за качественную подачу материала Христ. Все предельно понятно. Повторяю за тобой и все получается. Столкнулся с проблемой, не могу удалить параметры из раздела Software\Microsoft\Windows\CurrentVersion\Run, пишет "Не удалось выполнить запись в раздел реестра". Подскажи пожалуйста в чем проблема. С меня лайк и подписка.. Шучу, я уже лайкнул и подписался)
Системные ветки так просто не изменить. Нужны привилегии, про это было видео.
Также рекомендовал делать всё в HKCU.
@@XpucT Я делаю в HKCU, как ты и рекомендовал в этом видео, а про привилегии пробовал как в твоем видео про запуск от администратора, добавив в проект файл манифеста приложения и установив level="requireAdministrator". Программа запускается от имени администратора, но в результате - "не удалось выполнить запись в раздел реестра". Может ты имеешь ввиду другое видео? Наверное я тебя не правильно понял.
@@АлексДронго-х3к нет, Ты всё верно понял.
Тогда странно почему не удаётся. Ветка Мне очень даже знакомая.
Похоже Ты просто забыл убрать галочку с предпочтения 32-битной ОС.
Свойства проекта ☝
@@XpucT Убрал галочку, как ты знал?), результат тот же. Пересобрал проект и все рано не помогло. Через ПКМ удаляю без проблем.
@@АлексДронго-х3к пробовал создавать новый проект?
Если да, то скинь сценарий, который должен отработать.
Здравствуйте ,хачатур.Такая проблема :пытаюсь проверить значение в реестре dword-а ,а он не видит значение ,когда оно есть,а когда нет.Параметр с автовыгрузкой dll из ОЗУ.Вот код:
RegistryKey newkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer");
if (newkey.GetValue("AlwaysUnloadDll", RegistryValueKind.DWord) != null)
{
checkBox1.BackColor = System.Drawing.Color.Green;
}
else
{
checkBox5.BackColor = System.Drawing.Color.Red;
}
Суть в том ,чтобы при загрузке формы чекбокс1 светился зелёным ,если параметр есть ,а если нет ,то светился красным.
Второй способ проверки наличия значения вообще не работает
Добрый день 🖐
Например, на 36:44, если поставить на паузу, можно увидеть, что проверку на null самого раздела лучше делать знаком вопроса.
Поэтому сначала давайте сделаем так:
newkey?.GetValue
Далее в скобках Вы указываете тип параметра, что делать совершенно не нужно, ибо условие у Вас проверяет в принципе наличие параметра. Его тип не важен. Если он важен, то нужно расширять условие.
@@XpucT Это всё-равно не работает.Я убрал значение с двордом и поставил знак вопроса.Это ничего не изменило.Он постоянно говорит ,что там этого параметра нет,хотя я удалял и добавлял значение.
Новый код:
RegistryKey newkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer");
if (newkey?.GetValue("AlwaysUnloadDll") != null)
{
checkBox5.BackColor = System.Drawing.Color.Green;
}
else
{
checkBox5.BackColor = System.Drawing.Color.Red;
}
@@dmitrypushnov8194 код, который Вы только что дали 100% рабочий.
Вероятно где-то тупите. Нужно только понять, где именно. То есть всё делаете правильно, но где-то что-то не так воспринимаете или меняете.
Могу предположить, что Вы ожидаете какое-то конкретное значение, раз изначально писали Dword. У вас где-то тут заминка.
Надеюсь, что Я понятно объясняю, что код рабочий и он делает ровно то, что делает. У новичков всегда так. Это нормально. К этому нужно просто привыкнуть. Пишешь одно, программа не выполняет этого. Но это всегда не так =) Программа всегда делает ровно то, что Вы ей говорите =)
Идеальное условие должно выглядеть так:
RegistryKey newkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer");
if (newkey?.GetValue("AlwaysUnloadDll")?.ToString() == "1")
{
// Параметр AlwaysUnloadDll существует и он равен 1
// Программа не свалится в ошибку, если параметра нет,
// т.к. проверяется и наличие ключа реестра и его параметр,
// если он также есть
}
else
{
// Либо нет ветки реестра, либо параметра, либо параметр не равен 1
}
@@XpucT Я вписал всё это в код и это не работает.У меня есть предположение ,что из-за нахождения параметра в ветке HKLM ,которая вроде системная ,Windows защищает её от изменений и не даёт доступ.Поэтому программа и говорит ,что значения нет.Я только что проверил это на ветке HKCU с тем же параметром дворд и он всё понимал и говорил когда значение есть ,а когда оно или не равно 1,или его нет.Тут скорее стоит вопрос как обойти защиту системы
Не могли бы вы растолковать или дать код, для добавления бинарного ключа в реестр.
Импорт подобного ключа из реестра:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Test\6162]
"Key2"=hex:86,4d,22,ba,90,f0,79,07,1b,1d,23,81,51,6f,4c,fd,d8,78,5f,ca,92,eb,\
71,06,0c,01,3f,c2,53,55,55,fd,db,1c,21,b6,f4,b4,45,6f,42,31,27,b7,42,6e,76,\
d7,85,43,05,bc,e5,93,62,04,3c,67,27,b4,1f,6d,45,d7,c6,7b,03,aa,ee,99,73,0b,\
3b,2e,18,ca,41,68,54,ef,d5,04,5b,bf,de,98,4d,0a,5f,0c,04,d8,76,50,67,ca,99,\
4a,5e,8b,e7,b4,43,1b,44,37,0d,c7,40,46,48,f6,99,65,44,bf,ed,90,44,6b,3f,05,\
02,ba,61,6f,67,d4,f8,43,09,d3,d2,b8,4f,04,06,02,29,a6,42,51,43,db,ec,75,26,\
ab,c2,95,4f,08,25,22,5d,bb,47,72,66,c9,ee,44,1c,cd,cc,b0,47,37,22,65,59,84,\
09,a9,2f,d3,4e,89,ab,d8,f8,b4,74,35,87,60,74,f3,8c
byte[] value = { 0x86,0x4d,0x22................. };
RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Test\6162");
key.SetValue("Key2", value, RegistryValueKind.Binary);
@@XpucT Большое спасибо, а то мучился с этим RegistryValueKind.Binar
добрый вечер. по sendKeys будут уроки?
Добрый 🖐
Уже есть:
th-cam.com/play/PL05SB3rBbUsraqiEUeS70RKhVAu97nGeb.html
@@XpucT да, спасибо, я многие из них просматривал, но по sendKeys не нашел.
Привет, Хачатур. Вы рассказывали в этом видео и следующем о реестре. Так вот - как импортировать именно .reg файлик. Который будет не находится в папке с программой, а в самой программе (исправил =)). Или же для контекстного меню в Win 10 Tweaker сами всё прописывали? + Подойдёт ли добавление .reg файла как ресурса?
Привет 🖐
Вопрос противоречивый, перечитай, что написал.
Как можно импортировать файлик, который не рядом с программой, а в реестре =))
Ты понимаешь, что написал? =)))
Касаемо того, как делаю для контекстного меню в Win 10 Tweaker.
Делаю именно так, как обучаю тут. RegistryKey.
Но вопрос с импортом вообще не понял. Перефразируй. Только на этот раз прочти, потом отправляй =)
@@XpucT А ещё, если я так написал, тогда хочу ещё спросить - как экспортировать что-то из реестра в файл
@@wziel8472 stackoverflow.com/a/16317193
@@XpucT Вот есть программа. Я добавляю в неё ресурс (вы показывали в одном из видео как это делать). И я хочу, чтобы программа могла его импортировать.
Жаль что на ютуб нельзя прикреплять фото, мог бы сделать понятнее
@@wziel8472 можно залить скриншот на imgur.com
И ссылку сюда.
спасибо
Очень странно используя студию пытаться создавать файл настроек вручную, в свойствах проекта есть раздел который позволяет формировать файл настроек, и работать с ним проще чем с реестром, и создаётся он автоматом рядом с экзешником
Здравствуй Хачатур ты рассказал как прочитать настройки из реестра а как их сохранить, или я чего то не понял )
Привет 🖐
При запуске читаешь параметры из реестра.
Вносишь, а при запуске читаешь.
Может потом сниму отдельное видео, как делать настройки 👍
6: 28 что за звук издаёт кот?
Это кресло.
Man you are Great
Привет, не подскажешь какой параметр в реестре отвечает за смену обоев рабочего стола на каждом мониторе, то-есть на одном мониторе одно изображение, а на другом другое.
Привет 🖐
Хм... увы, не в курсе.
Здравствуйте, подскажите пожалуйста, как можно получить все файлы из папки где есть под папки в которых тоже могут быть под папки, и как можно получить все пути к папкам и файлам в виде массивов путей?
Добрый день.
Не пропускайте уроки:
string[] array = Directory.GetFiles(@"D:\Разное", "*.*", SearchOption.AllDirectories);
@@XpucT Спасибо, за помощь, я хотел спросить если программа выдает ошибку что отказано в доступе как можно решить данную проблему? Я искал в инете то там говорят что нужно запускать от имени администратора, но все равно не помогает
@@blackdream9372 если есть админские права, то больше и не надо.
А если этого мало, значит пытаешься что-то нарушить.
Если не нарушить, то что? Я не услышал, к чему именно доступ нужен.
Если к ядру системы, то само собой не санкционированный доступ.
@@XpucT Я хотел прочить все файлы с дисков, то есть консоль выводит все файлы к примеру на диску C, D. Но при попытке чтения файлов из диска С выдается такая ошибка(System.UnauthorizedAccessException: "Отказано в доступе по пути "C:\Documents and Settings"."),(System.UnauthorizedAccessException: "Отказано в доступе по пути "D:\System Volume Information"."), Спасибо за помощь
@@blackdream9372 stackoverflow.com/a/1393219/8679729
Хачатур, ты сказал именно в этом видео «Пока» на конце, а не «Переходим к следующему видео», к чему этот намёк?
Эм... не заметил =)) У Меня всё спонтанно. Само как-то так вышло. Но это далеко ещё не всё по C#.
Но как я понимаю, реестр нужен только при создании Windows программ?
Да.
Хачатур, привет!
Есть такой код
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
label1.Text = "Нажми кнопку для настройки";
if (Registry.CurrentUser.CreateSubKey(@"Software\ServerConnect").GetValue("SettingsAre").ToString() == "1")
{
label1.Text = "Настройки уже сделаны!";
button1.Enabled = false;
}
.......
Программа не запускается (хотя мелькает в процессах). Если убираю проверку, то все нормально. Подскажи, пожалуйста,как тут лучше поступить?
Привет, Дим 🖐
Записал Тебе небольшое видео: v004.radikal.ru/2004/fc/6226753378-5-ce0df7b2cac93ec74b02d59693c75490.mp4
@@XpucT Охренеть! Ответ в виде видео! Спасибо огромное! И да, теперь заработало как надо! Огонь!
Доброго времени суток. А есть какие-нибудь плагины для полной визуализации дерева реестра?
Чтобы можно было взаимодействовать с полученной визуализацией так же, как и с самим редактором реестра (кликать по разделам, раскрывать кусты и тд )?
Добрый день, Дима 🖐
Плагины не нужны. У нас есть контрол TreeView 👍
Добрый день, я хочу написать свою новелу на C# и WPF. Я не знаю как сделать так, чтоб например персонаж сказал что-то, юзер нажал на кнопку [Далее], и персонаж сказал ещё что-то и так далее. При этом, кнопки текст боксы и т.д. Добавляются через обычный XAML. И функционирует, и запускается, но вот конструктор форм WPF не грузится у него.
Добрый день.
Во всей это абстракции Я услышал и навскидку посчитал сценариев 20. Не говоря уже о реализации.
Я бы помог с решение проблемы. А вот с решением вопросов помогает Google, о чём говорилось в Уроке 0.
Вы спросите, что именно не получается, когда Вы делает вот то и вот это. А абстрактно - это всё равно, что написать за Вас всю составляющую =)
@@XpucT Я гуглил уже, ответов на вопрос нету, создал тему на КиберФоруме, нету ответа
пробую написать простенькую прогу, как можно в этом примере выводить каждый раз выделенный фрагмент в новой строке ??? + "
" - ничего не дало...
textBox1.Focus();
textBox1.Text = webBrowser1.DocumentText;
{
textBox1.SelectionStart = 4302;
textBox1.SelectionLength = 34;
}
textBox2.Text = textBox1.SelectedText;
Три раза прочёл Ваш вопрос и не понял.
Вы не поленитесь описать максимально подробно, что и где расположено, какое действие Вы делаете или хотите сделать и что должно из этого получиться.
@@XpucT ок. При нажатии на кнопку появляется некий текст в textBox1, я по Вашему уроку выделяю нужный мне текст и вставляю его в textBox2 и тут планируется цикл, но при следующем нажатии на кнопку нужный текст замещает предыдущий, а нужно чтобы дописывался ниже. Возможно таким методом это не делается, но я только начал смотреть Ваши уроки и у меня не так много вариантов для реализации ))
@@XpucT Нашел решение, вопрос закрыт.
Решилось строкой textBox4.AppendText(Environment.NewLine + textBox2.Text + textBox3.Text);
Привет, по твоим уроком уже сам пишу программы) Вообще классные, но у меня возник вопрос:
Я пытаюсь чтобы получалось рандомное число от 1 до 2 и если было число = 1,то писалось одно, а если 2, то другое, но у меня всегда пишет - 1
Random rnd = new Random();
int pov = rnd.Next(1, 2);
if (pov >= 1)
{
pov = "3 - 4";
}
else
{
pov = 5 - 6;
}
вот я пока тебе писал понял, почему -1 писал, только вот как сделать чтобы у меня было именно именно такие названия ( в else как я изначально тупил, а в if то, что я хочу получить, но не выходит никак)
Привет 🖐
Судя по коду, ничего удивительного не вижу =)
Давай ещё раз. Что требуется. Потому что вижу, что всего будет -1.
@@XpucT Да я решил уже) по говнокодил правда, но к нужному результату пришёл 😄
Как сделать так, чтобы контролы автоматические Увеличивались По мере
увеличение размера окна?
В WPF это можно сделать автоматически, а в Windows Forms нужно писать свой алгоритм.
Возможно, рассмотрим в будущем.
лооол. у меня хдд и 2 гига оперативки ддр2.
А что программы аля Ccliner делают с реестром? Что похожие программы чистят в реестре? Что значит чистить реестр?
Этот вопрос на самом деле крайне далёк от темы видео.
Чтобы понимать, что чистить, нужно хорошо понимать, что это мусор.
Чтобы назвать что-то мусором, нужно точно быть уверенным, что это данные, которые никому не полезны и точны являются помехой чему-то другому. К этому мусору можно отнести следы использования USB-накопителей, которые были подключены к компу, история посещений каталогов, путей сохранения файлов и прочие. Тут нужно думать индивидуально и быть уверенным, что это мусор для всех. Смотря для кого и кому Ты предлагаешь чистить. CCleaner показывает, что он собирается чистить и в google можно найти подробнее про эти ветки. Почему CCleaner считает их мусором.
@@XpucT спасибо
@@XpucT А как открыть реестр после его закрытия?
RegistryKey key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Моя программа");
key.Close();
key.Open() не работает.
@@BobiBobObana а не нужно закрывать раньше времени. Всё просто. Если поработал, закрыл.
Как удалить ключ(дерево) в разделе current user ? Пишу using (...
.. registry.currentuser.opensubkey("мой раздел"))
И т.д., с проверкой кода, но этот код работает только так в реестре, hkey_current_user/ "мой раздел"/ удаляет внутри этого раздела, а мне нужно что удалил раздел " мой раздел" из директории hkey_current_user , как быть?
.. registry.currentuser.opensubkey("мой раздел", true)) ➜ это во-первых.
Во-вторых: DeleteSubkeyTree()
@@XpucT using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Admin",true))
{
if (key != null)
{
if (key.OpenSubKey("Admin") != null)
{
key.DeleteSubKeyTree("Admin");
}
}
}
Как-то так, и при этом ничего не происходит, в реестре. А если создать раздел в разделе "Admin" точно с таким же именем, то его успешно удаляет...
Проблема решена:)
@@googleuser3009 всё верно.
Посмотри своё условие. key - это уже ветка, открывающая подраздел Admin
Далее ты пишешь key.Открой(Admin)
То есть ты пишешь Admin.Открой(Admin)
Внимательнее нужно.
@@XpucT У вас нет видео по созданию пробной версии программы(ограниченное число запусков)?
забавно... директива Win32 отказывается работать на Win7 ))) метод RegistryKey не найден говорит... :(
SDK NET Framework установлен?
@@XpucT Да. все, я разобрался) На винде стояла версия 4.7.1, но то ли она была кривая, то ли в самой библиотеке не было чего-то нужного (классов наверное), а проект я делал на 4.7.2. Но, даже после 4.72 не запустилось. Однако стоило мне обновиться до 4.8 сразу все заработало... Хотя, я переводил весь проект на версию 4 (чтобы на XP тоже можно было работать) и там все без проблем работает по-умолчанию... Наверное чудеса. а может я еще криворукий пока что))
Спасибо за отклик)
Зачем нужен реестр?
Добрый день, тут мой друг столкнулся с проблемой. Он пишет программу на WPF, и у него в последнее время вообще не грузится конструктор форм WPF.
ReSharper не ставил?
Средства ➜ Параметры ➜ Конструктор XAML ➜ Включить конструктор XAML.
@@XpucT Он был включён, но всё равно не грузится. Там написано, что конструктор якобы загружается, но такой экран так и остаётся
@@Атчачат Тогда проще переустановить студию. Средства ➜ Средства и компоненты.
@@XpucT Не помогает ему. Всё так же - не грузит
@@Атчачат тогда остаётся вынуть проекты все и сбросить виртуалку на предыдущий снимок.
Для просмотра реестра нужны права админа?
Всё зависит от ветки, которую открываешь.
Как правило права для просмотра не нужны.
катэ +!!!
Христ, считаешь ли ты, что люди просмотревшие этот курс, могут называть себя .net-разработчиками ? Возможно ты уже где-то упомянал, но какая конечная цель этого курса ?
Посмотри первое видео, которое Урок 0. И чем дальше будешь смотреть, тем лучше начнёшь понимать, что ответ найдёшь сам.
Я лично, если спрашивать Меня, уже не думаю, а знаю. И знаю следующее: люди и в комментах и на почту скидывают свои первые программы. Я рад, что есть люди с фантазией и идеей, которые наконец-то смогли сделать то, что им давно нужно было. Курс ещё не окончен, но пинок им такой дал в первых 20 видео, что скоро будут Меня обучать. Это уже, что касается цели. Найти сообщников, которые будут друг друга развивать.
Слишком много информации за раз. Мне, например, не известно Ничего о реестре. Я не знаю, что это такое, для чего это нужно, я слышал это слово часто, но для чего оно я не догоняю. Поэтому бОльшая часть информации мне как - то не прижилась, я тупо ничего не понял. Понял лишь то, что все действия в реестре происходят быстрее. Столько вопросов. Типо, как можно сравнивать какой - нибудь txt файл с гигантским текстом и строку "Значение" какого - то файла в реестре. Возможно я чего - то не знаю. Или в "Значение" можно также дохера текста вставлять...
Задавайте вопросы. Очень вероятно, что Я обсужу их и раскрою полностью в одном из видео. Я уже собираю самые популярные вопросы.
Ещё непонятный момент с этим Current User, Local Machine, Users. Как я помню, ты сказал, что Current User - это текущая учётка, а Local Machine - это все. Типо, обращаться может ко всем учёткам, как public в c#?
Примерно да. Но всё же точнее сказано в самом видео.
То есть значения в ветке HKLM влияют на все учётные записи, а HKCU только на текущего пользователя.
🏆👍
Зачем это нужно?
Да вот придумали от нехуй делать.
@@XpucT лучший ответ на вопрос такого характера!
Народ, может я тупой, хотя нет, скорее всего я тупой. Крч не суть. Вопрос: О чем вы тут базарите? Я один да тут с нуля пришел учить си шарп, или я такой отсталый, что даже просмотрев базовые 20 уроков не врубаюсь в эту тему?
Со звуком смотрел?
Кто смотрит и ждет кота th-cam.com/video/1WCmhHq1aJQ/w-d-xo.html
LocalMachine отказывется работать на c#... Вот почему XрисT не рекомендует там работать!
Нет, не по этой причине. По другой. Озвученной в видео.
Почему отказывается работать LocalMachine - другой вопрос.
Скорее всего Вы столкнулись с тем, что лезете в ветку реестра, защищённую правами системы или TrustedInstaller.