Lpadmin не удается подключиться к серверу неправильный дескриптор файла
Пять исправлений для ошибки сервера DDE Acrobat
Немного усложним задачу
Представим, что данные нам важны, но места на диске у нас нет ни в одном из разделов и подключить диск мы не можем.
Перезапускаем приложение, и проверяем:
Места на диске нет, но мы успешно создаем там именованный pipe:
Теперь нам надо как-то завернуть все данные, что попадают в этот pipe на другой сервер через сеть, для этого подойдет все тот же netcat.
На нашем проблемном сервере запускаем в отдельном терминале
Теперь все данные, которые попадут в pipe автоматически попадут на stdin в netcat, который их отправит в сеть на порт 7777.
Все что нам осталось сделать это начать писать наши данные в этот именованный pipe.
У нас уже есть запущенное приложение:
Из всех флагов нам нужен только O_WRONLY так как файл уже существует и очищать нам его не нужно
Данные идут, проверяем проблемный сервер
Данные сохранились, проблема решена.
Пользуясь случаем, передаю привет коллегам из компании Degiro.
Слушайте подкасты Радио-Т.
В качестве домашнего задания предлагаю подумать, что будет в файл дескрипторах процесса cat и sleep если запустить такую команду:
Есть сервер на Windows 2008 R2. Подняли на нем сервер терминалов. Все вроде бы ничего — доступ есть, из локальной сети заходит нормально, но при попытке зайти извне при вводе заведомо правильного логина и пароля юзера (или даже локального администратора сервера) радует надписью «Неверное имя пользователя или пароль».
В чем может быть засада? Перепробовали все варианты, какие только пришли в голову.
Оценить 4 комментария
Уточняю — «извне» — это из другой вообще сети, которая никак не связана с нашей корпоративной. Подключается оно поверх Интернета через стандартный RDP, если я правильно понял суть вопроса.
Вы написали, что из другой сети подключаетесь, а Вы уверены что подключаетесь именно к этому серверу? Что в Вашей сети нет никаких nat'ов. Отключите на этом сервере rdp и попробуйте подключиться.
1.Сделайте пароль для начала одни цифры.
2. Смотрите логи(Журнал-Безопасность)(хотя они вряд ли помогут )
3. Если пускает вводить логин/пароль, то определенно дело не в фаере.
4. Возможно дело в проверке подлинности, но тоже маловероятно.
Логин и пароль вставляете из буфера обмена?
Пару раз такое было — не пускало. А вот когда ручками вводили — все в порядке.
Кстати, еще один вариант решения — сохраните RDP-соединение с каким-нибудь сервером (обязательно с сохранением пароля), а потом этот файл отредактируйте блокнотом — поставьте нужные данные «проблемного» сервера. Тоже может помочь.
Проверьте/обновите версию RDP клиента, попробуйте зайти при помощи одного и того же компьютера (ноут) из локалки по проводу, и тут же по через инет (например, через соседский вайфай).
Проверьте настройки роутера — может там что с форвардинком и т.п.
Если я правильно понял суть проблемы (разные подсети подключения), то попробуйте включить службу маршрутизации и удаленного доступа (RRAS) на сервере и клиентах. Например, на ОС Windows 7, Windows 8 она отключена по умолчанию, что не позволяет использовать общее подключение к Интернету для подсетей.
во первых. попробовать залогиниться вот так:
%domain%\%login%, если воркгруппа, тогда в место домена надо подставить hostname сервера, к которому подключаетесь, точно так же, как оно указано в поле «имя компьютера» на рдп сервере.
2. проверить, есть ли на конечном рдп сервере маршрут в ту сеть, из которой идет подключение, т.к. пакеты будут доходить, но куда их отправлять — машина может и не знать.
Найдено Гуглом по запросу «windows 2008 rdp remote failed password».
Еще может быть дело в маршрутизации.
Может помочь кому-то косвенно. У меня тоже сервер на винде, но маршрутизация и фаервол на KERIO
Оказалось в правиле KERIO указал входящий интерфейс - "Любой" (вроде логично). При этом без проблем на сервер попадал, но шел отлуп, что пароль неверный. Что изнутри сети (до добавления правила тут все работало), что с с внешки.
Переставил правило на входящий с "Интернет-интерфейсы" и все заработало.
Получил аналогичную ошибку. Но несколько иные исходные данные.
Есть win server, в нем работает wireguard в качестве vpn. На роутере включена до wireguard перенаправление портов и в брандамауэре правила установлены. Создан ряд конфиг файлов для подключения к VPN по ключам. Захожу извне (с мобильного интернета) со своего ноутбука, успешно цепляюсь к VPN и захожу на конечный сервер по RDP как пользователь домена. Передаю аналогичный конфиг файл коллеге. Человек успешно целпяется к VPN (проверено 100%) получает ошибку что не верные данные вводит. В событиях windows ошибка "4625 неизвестное имя или пароль". Перепроверяли пароли, имена, введено всё правильно (бывало раньше тупили из-за например наличия пробела в конце, но в этот раз явно проблема не в этом). Имя домена тоже вводится верно. По итогу я смог зайти на сервер с помощью локального пользователя (указав понятно вместо домена имя хоста). Пользователи из домена не подключаются. Почему-то сервер не воспринимается пользователей домена. И странность в том что я со своего ноута, подключаясь через мобильный инет билайна, нормально захожу. У коллеги сетевые адаптеры настроены по умолчанию, роутер тоже на банальных настройках. В чем тут секрет?
Дополню, код ошибки в журнале 0xC000006D, подсостояние 0xC000006A - значит верное имя, но неверный пароль. Повторюсь, перепробовали несколько пользователей, проверяли введенные символы. При этом пользователь не в домене заходит нормально, а доменные пользователи не входят. Пароли в обоих случаях с цифрами.
Дополнение. Вычислил что с проблемного ПК нельзя также зайти на хост по открытым портам TCP шлюза удаленных рабочих столов, т.е. шлюз даже не пытается выполнить запрос логина/пароля. Также с проблемного ПК нельзя зайти через мобильного оператора. Зайти нельзя именно в качестве доменных пользователей. Вывод можно сделать один. На проблемном ПК имеются какие-то настройки, которые не удовлетворяют групповым политикам. При этом windows server выдает конкретную ошибку что не верный пароль. Вот такие итоги. Вот кстати один из поводов не делать Active Directory, особенно в малых организациях.
Отключил проверку на уровне сети на сервере (NLA) - не помогло.
Up - отключение на уровне сети на сервере и проверку входа по RDP надо настраивать в групповых политиках. После этого вход осуществляется с проблемных клиентов. Также в таком режиме отключается UDP.
Поставил себе debian etch от августа 2006. Все вроде работает, как и в sarge и даже лучше, но только не cups. Даже принтер нельзя настроить. Вот что выдает KDE Printing Tool:
E [15/Nov/2006:06:25:40 +0300] Unable to bind socket for address 127.0.0.1:631 - Cannot assign requested address.
E [19/Nov/2006:11:27:34 +0300] Unable to bind socket for address 127.0.0.1:631 - Cannot assign requested address.
E [19/Nov/2006:11:28:00 +0300] Unable to bind socket for address 127.0.0.1:631 - Cannot assign requested address.
E [19/Nov/2006:11:28:00 +0300] Unable to bind socket for address 127.0.0.1:631 - Cannot assign requested address.
I [19/Nov/2006:15:22:53 +0300] Loaded configuration file "/etc/cups/cupsd.conf"
N [19/Nov/2006:15:22:53 +0300] Group and SystemGroup cannot use the same groups!
I [19/Nov/2006:15:22:53 +0300] Resetting Group to "root".
W [19/Nov/2006:15:22:53 +0300] Repairing ownership of "/var/cache/cups"
W [19/Nov/2006:15:22:53 +0300] Repairing ownership of "/var/run/cups"
W [19/Nov/2006:15:22:53 +0300] Repairing ownership of "/etc/cups"
W [19/Nov/2006:15:22:53 +0300] Repairing ownership of "/etc/cups/ppd"
W [19/Nov/2006:15:22:53 +0300] Repairing ownership of "/etc/cups/ssl"
W [19/Nov/2006:15:22:53 +0300] Repairing ownership of "/etc/cups/printers.conf"
W [19/Nov/2006:15:22:53 +0300] Repairing ownership of "/var/spool/cups"
W [19/Nov/2006:15:22:53 +0300] Repairing ownership of "/var/spool/cups/tmp"
I [19/Nov/2006:15:22:53 +0300] Cleaning out old temporary files in "/var/spool/cups/tmp".
I [19/Nov/2006:15:22:53 +0300] Configured for up to 100 clients.
I [19/Nov/2006:15:22:53 +0300] Allowing up to 100 client connections per host.
I [19/Nov/2006:15:22:53 +0300] Using policy "default" as the default!
I [19/Nov/2006:15:22:53 +0300] Partial reload complete.
I [19/Nov/2006:15:22:53 +0300] Listening to 127.0.0.1:631 on fd 2.
I [19/Nov/2006:15:22:53 +0300] Listening to /var/run/cups/cups.sock on fd 3.
I [19/Nov/2006:15:24:15 +0300] Scheduler shutting down normally.
I [19/Nov/2006:15:24:15 +0300] Saving remote.cache.
I [19/Nov/2006:15:24:15 +0300] Saving job cache file "/var/cache/cups/job.cache".
I [19/Nov/2006:15:25:19 +0300] Loaded configuration file "/etc/cups/cupsd.conf"
N [19/Nov/2006:15:25:19 +0300] Group and SystemGroup cannot use the same groups!
I [19/Nov/2006:15:25:19 +0300] Resetting Group to "root".
W [19/Nov/2006:15:25:19 +0300] Repairing ownership of "/etc/cups"
W [19/Nov/2006:15:25:19 +0300] Repairing ownership of "/etc/cups/ppd"
W [19/Nov/2006:15:25:19 +0300] Repairing ownership of "/etc/cups/printers.conf"
I [19/Nov/2006:15:25:19 +0300] Cleaning out old temporary files in "/var/spool/cups/tmp".
I [19/Nov/2006:15:25:19 +0300] Configured for up to 100 clients.
I [19/Nov/2006:15:25:19 +0300] Allowing up to 100 client connections per host.
I [19/Nov/2006:15:25:19 +0300] Using policy "default" as the default!
I [19/Nov/2006:15:25:19 +0300] Full reload is required.
I [19/Nov/2006:15:25:19 +0300] Loaded MIME database from '/etc/cups': 34 types, 38 filters.
I [19/Nov/2006:15:25:19 +0300] Loading job cache file "/var/cache/cups/job.cache".
I [19/Nov/2006:15:25:19 +0300] Full reload complete.
I [19/Nov/2006:15:25:19 +0300] Listening to 127.0.0.1:631 on fd 2.
I [19/Nov/2006:15:25:19 +0300] Listening to /var/run/cups/cups.sock on fd 3.
А вот access_log:
localhost - - [19/Nov/2006:15:06:19 +0300] "POST / HTTP/1.1" 200 1256 CUPS-Get-Devices -
localhost - - [19/Nov/2006:15:06:22 +0300] "POST / HTTP/1.1" 200 1256 CUPS-Get-Devices -
localhost - - [19/Nov/2006:15:06:29 +0300] "POST / HTTP/1.1" 200 1197 CUPS-Get-Devices -
localhost - - [19/Nov/2006:15:09:37 +0300] "POST / HTTP/1.1" 200 1256 CUPS-Get-Devices -
localhost - - [19/Nov/2006:15:09:40 +0300] "POST / HTTP/1.1" 200 1256 CUPS-Get-Devices -
localhost - - [19/Nov/2006:15:09:45 +0300] "POST / HTTP/1.1" 200 1197 CUPS-Get-Devices -
localhost - - [19/Nov/2006:15:12:00 +0300] "POST /admin/ HTTP/1.1" 200 363 CUPS-Add-Modify-Printer client-error-bad-request
localhost - - [19/Nov/2006:15:21:08 +0300] "GET /admin/conf/cupsd.conf HTTP/1.1" 401 0 - -
localhost - root [19/Nov/2006:15:21:19 +0300] "GET /admin/conf/cupsd.conf HTTP/1.1" 200 2253 - -
localhost - - [19/Nov/2006:15:21:19 +0300] "POST /classes/ HTTP/1.1" 200 75 CUPS-Get-Classes client-error-not-found
localhost - - [19/Nov/2006:15:22:52 +0300] "POST /classes/ HTTP/1.1" 200 75 CUPS-Get-Classes client-error-not-found
localhost - root [19/Nov/2006:15:22:53 +0300] "PUT /admin/conf/cupsd.conf HTTP/1.1" 201 20041 - -
Проверял - loopback интерфейс присутствует. Обновлял cupsys до текущего (1.2.5, кажется) - не помогает.
а через браузер на 127.0.0.1:631 зайти не пытался? а настроить cups через браузер?
ifconfig в студию - если там нет lo, то туда и копать.
А как можно узнать, кто занимает порт? Сканером портов (забыл, как эта прога называется)? Сомневаюсь, чтобы инициализационые скрипты 2 экземпляра cupsd запускали. Да и ps этого не подтверждает.
>ifconfig в студию - если там нет lo, то туда и копать.
Вот вывод ifconfig -a :
eth0 Link encap:Ethernet HWaddr 00:C0:DF:03:DA:D7
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:5 Base address:0xec00
lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
ppp0 Link encap:Point-to-Point Protocol
inet addr:212.129.107.251 P-t-P:212.129.107.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:456 errors:3 dropped:0 overruns:0 frame:0
TX packets:458 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:249622 (243.7 KiB) TX bytes:47173 (46.0 KiB)
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Вывод `netstat -ltnp | grep 631`:
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3986/cupsd
ps -A | grep cups :
3986 ? 00:00:00 cupsd
Вроде ничего странного, но не работает.
А где inet addres?
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:900 (900.0 b) TX bytes:900 (900.0 b)
для запуска в /etc/network/interfaces
auto lo
iface lo inet loopback
Удалось подключиться через localhost и принтер. Только вот KDE-шные проги упорно пишут те же ошибки, что и раньше (не найти список принтеров, убедитесь, что сервер cups запущен и правильно настроен). Да и в localhost:631 при попытке редактировать конфигурационный файл выдается No such file or directory.
Какой файл не находится?
Еще интересно, что в качестве сервера записан /var/run/cups/cups.sock с портом 631.
Я проверил: такого файла нет.
проверь, есть ли в /etc/cups/cupsd.conf строчка
Listen localhost:631 или Listen 127.0.0.1:631
И попробуй закомментировать Listen /var/run/cups/cups.sock
Переписал - не помогает. :(
В KDE Printing Tool установил сервер localhost - теперь ошибок при выводе принтеров нет. Правда, печать тоже не идет. Почему-то владелец всех заданий становится root, задание не выполняется и принтер останавливается (в системе, а реальный вообще не реагирует на задание).
Посмотрел права пользователей и обнаружил, что они не входят в группу lp - исправил, но это не изменило ситуацию. Вот вывод errors_log последней страницы:
d [25/Nov/2006:11:10:00 +0300] copy_attribute(0x80ac138, 0x80d4cc0[printer-op-policy-supported,4,42])
d [25/Nov/2006:11:10:00 +0300] cupsdReadClient: 11 Closing data file 10, size=20091.
I [25/Nov/2006:11:10:00 +0300] Installing config file "/etc/cups/cupsd.conf".
D [25/Nov/2006:11:10:00 +0300] cupsdSendError: 11 code=201 (Created)
D [25/Nov/2006:11:10:00 +0300] cupsdCloseClient: 7
d [25/Nov/2006:11:10:00 +0300] cupsdCloseClient: Removing fd 7 from InputSet and OutputSet.
D [25/Nov/2006:11:10:00 +0300] cupsdCloseClient: 8
d [25/Nov/2006:11:10:00 +0300] cupsdCloseClient: Removing fd 8 from InputSet and OutputSet.
D [25/Nov/2006:11:10:00 +0300] cupsdCloseClient: 11
d [25/Nov/2006:11:10:00 +0300] cupsdCloseClient: Removing fd 11 from InputSet and OutputSet.
d [25/Nov/2006:11:10:00 +0300] cupsdPauseListening: Clearing input bits.
d [25/Nov/2006:11:10:00 +0300] cupsdPauseListening: Removing fd 0 from InputSet.
d [25/Nov/2006:11:10:00 +0300] cupsdStopListening: closing all listen sockets.
d [25/Nov/2006:11:10:00 +0300] cupsdPauseListening: Clearing input bits.
d [25/Nov/2006:11:10:00 +0300] cupsdPauseListening: Removing fd 0 from InputSet.
d [25/Nov/2006:11:10:00 +0300] cupsdStopBrowsing: Removing fd 3 from InputSet.
I [25/Nov/2006:11:10:00 +0300] Saving remote.cache.
d [25/Nov/2006:11:10:00 +0300] cupsdStopServer: Removing fd 4 from InputSet.
I [25/Nov/2006:11:10:00 +0300] Loaded configuration file "/etc/cups/cupsd.conf"
N [25/Nov/2006:11:10:00 +0300] Group and SystemGroup cannot use the same groups!
I [25/Nov/2006:11:10:00 +0300] Resetting Group to "root".
I [25/Nov/2006:11:10:00 +0300] Cleaning out old temporary files in "/var/spool/cups/tmp".
I [25/Nov/2006:11:10:00 +0300] Configured for up to 100 clients.
I [25/Nov/2006:11:10:00 +0300] Allowing up to 100 client connections per host.
I [25/Nov/2006:11:10:00 +0300] Using policy "default" as the default!
I [25/Nov/2006:11:10:00 +0300] Partial reload complete.
I [25/Nov/2006:11:10:00 +0300] Listening to 127.0.0.1:631 on fd 2.
I [25/Nov/2006:11:10:39 +0300] Adding start banner page "none" to job 9.
I [25/Nov/2006:11:10:39 +0300] Adding end banner page "none" to job 9.
I [25/Nov/2006:11:10:39 +0300] Job 9 queued on "ML1520" by "root".
I [25/Nov/2006:11:10:39 +0300] Started filter /usr/lib/cups/filter/pstops (PID 5418) for job 9.
I [25/Nov/2006:11:10:39 +0300] Started filter /usr/lib/cups/filter/foomatic-rip (PID 5419) for job 9.
I [25/Nov/2006:11:10:39 +0300] Started backend /usr/lib/cups/backend/parallel (PID 5420) for job 9.
E [25/Nov/2006:11:10:39 +0300] PID 5420 (/usr/lib/cups/backend/parallel) stopped with status 1!
I [25/Nov/2006:11:10:39 +0300] Hint: Try setting the LogLevel to "debug" to find out more.
E [25/Nov/2006:11:10:39 +0300] [Job 9] Unable to open parallel port device file "/dev/lp0": Permission denied
E [25/Nov/2006:11:10:43 +0300] PID 5419 (/usr/lib/cups/filter/foomatic-rip) stopped with status 9!
I [25/Nov/2006:11:10:43 +0300] Hint: Try setting the LogLevel to "debug" to find out more.
I [25/Nov/2006:11:10:43 +0300] [Job 9] Backend returned status 1 (failed)
I [25/Nov/2006:11:10:43 +0300] Saving printers.conf.
I [25/Nov/2006:11:11:04 +0300] Job 9 was canceled by "root".
Пробовал сменить драйвер на ml1510 (работал в Debian Sarge за отсутствием родного ml1520) - не помогает.
«Недопустимый дескриптор»
Есть две основные причины этой ошибки: последнее обновление Windows 10 не было установлено правильно или некоторые системные файлы были повреждены или повреждены. Вот как один пользователь описывает эту проблему:
Поэтому я только что установил обновление, и какое-то время оно работало просто замечательно.
Но теперь все шло как с ума, а BSOD […] я попытался перезагрузить компьютер, и он выдал «Неверный дескриптор». […]
Другая проблема – когда я нажимаю кнопку выключения после того, как дескриптор недействителен, он остается включенным и не выключается.
В Windows 10 эта ошибка также блокирует процесс печати, в результате чего пользователи не могут добавить принтер или использовать уже установленный.
Ошибка «Неверный дескриптор» также влияет на более старые версии Windows, не позволяя пользователям устанавливать какие-либо обновления или программное обеспечение на свои компьютеры.
Файл дескриптор
Проблема файла и программы, работающей с этим файлом, примерно такая же как нашей собаки и человека. Предположим я открыл файл под именем ivan.txt и начал в него записывать слово tuzik, но успел записать только первую букву «t» в файл, и этот файл был кем-то переименован, например в olya.txt. Но файл остался тем же самым, и я все еще хочу записать в него своего тузика. Каждый раз при открытии файла системным вызовом open в любом языке программирования я получаю уникальный ID, который указывает мне на файл, этот ID и есть файл дескриптор. И совершенно не важно, что и кто делает с этим файлом дальше, его могут удалить, его могут переименовать, ему могут поменять владельца или забрать права на чтение и запись, я все равно буду иметь к нему доступ, потому что на момент открытия файла у меня были права для его чтения и/или записи и я успел начать с ним работать, а значит должен продолжать это делать.
В Linux библиотека libc открывает для каждого запущенного приложения(процесса) 3 файл дескриптора, с номерами 0,1,2. Больше информации вы можете найти по ссылкам man stdio и man stdout
- Файл дескриптор 0 называется STDIN и ассоциируется с вводом данных у приложения
- Файл дескриптор 1 называется STDOUT и используется приложениями для вывода данных, например командами print
- Файл дескриптор 2 называется STDERR и используется приложениями для вывода данных, сообщающих об ошибке
Список файл дескрипторов можно посмотреть у любого процесса, если вы знаете его PID.
Например, откроем консоль с bash и посмотрим PID нашего процесса
Во второй консоли запустим
Файл дескриптор с номером 255 можете смело игнорировать в рамках данной статьи, он был открыт для своих нужд уже самим bash, а не прилинкованной библиотекой.
Сейчас все 3 файл дескриптора связаны с устройством псевдотерминала /dev/pts, но мы все равно можем ими манипулировать, например запустим во второй консоли
И в первой консоли мы увидим
«Неверный дескриптор» ошибки принтера
Решение 1. Запустите полное сканирование системы .
Вредоносные программы могут вызвать различные проблемы на вашем компьютере, в том числе ошибки. Выполните полное сканирование системы, чтобы обнаружить любые вредоносные программы, работающие на вашем компьютере. Вы можете использовать встроенные в Windows антивирусные программы, Защитник Windows или сторонние антивирусные решения.
Решение 2. Обновите драйверы ПК .
Устаревшие драйверы также могут вызывать ошибку «Неверный дескриптор». В результате установите на компьютер последние обновления драйверов и посмотрите, решит ли это действие проблему.
Как обновить драйверы в Windows 10
Если вы хотите установить определенные драйверы, запустите диспетчер устройств. Разверните доступные категории и выберите устройство, для которого вы хотите обновить драйвер.
Чтобы установить последние обновления драйверов для этого устройства, щелкните его правой кнопкой мыши и выберите «Обновить драйвер».
Третий вариант – загрузить доступные обновления драйверов непосредственно с веб-сайта производителя.
Обновите свои драйверы как профессионал с нашим исчерпывающим руководством!
Мы также настоятельно рекомендуем Модуль обновления драйверов TweakBit (одобрен Microsoft и Norton) для автоматической загрузки всех устаревших драйверов на ваш компьютер.
Это отличный инструмент, который сканирует обновления, а антивирус – на наличие угроз. Этот инструмент обеспечит безопасность вашей системы, поскольку вы можете вручную загрузить и установить неправильную версию драйвера.
Решение 3. Обновите свою ОС .
Убедитесь, что на вашем компьютере установлены последние обновления ОС Windows. В качестве напоминания, Microsoft постоянно выпускает обновления для Windows, чтобы улучшить стабильность системы и устранить различные проблемы.
Перейдите в Центр обновления Windows, проверьте наличие обновлений и установите доступные обновления.
Решение 4. Восстановите реестр .
Самый простой способ восстановить реестр – использовать специальный инструмент, такой как CCleaner. Не забудьте сначала сделать резервную копию реестра, если что-то пойдет не так.
Если вы не установили очиститель реестра на свой компьютер, ознакомьтесь с нашей статьей о лучших очистителях реестра для использования на ПК с Windows 10.
Вы также можете использовать средство проверки системных файлов Microsoft для проверки повреждений системных файлов. Вот как запустить сканирование SFC:
1. Перейдите в Пуск>, введите cmd >, щелкните правой кнопкой мыши Командную строку> выберите Запуск от имени администратора.
2. Теперь введите команду sfc/scannow
3. Дождитесь завершения процесса сканирования и перезагрузите компьютер. Все поврежденные файлы будут заменены при перезагрузке.
Решение 5. Загрузите универсальный драйвер печати HP
Многие пользователи Windows 10 сообщили, что при загрузке универсального драйвера печати HP исправлена ошибка «Неверный дескриптор».
В качестве быстрого напоминания этот инструмент автоматически обнаруживает и настраивает поддерживаемые устройства HP и некоторые устройства не HP.
Вы можете загрузить универсальный драйвер печати HP с веб-сайта HP.
Решение 6. Удалите и переустановите Microsoft Print в PDF
Некоторые пользователи подтвердили, что удаление принтера и его повторная установка решают проблему, поэтому вы можете попробовать это.
Драйвер принтера поврежден? Вот пошаговое руководство по устранению проблемы!
Исправлено: дескриптор недействителен в Windows 10
Ошибка «Неверный дескриптор» не позволяет пользователям войти в систему
Если вы не можете получить доступ к своей учетной записи из-за ошибки «Неверный дескриптор», попробуйте перезагрузить компьютер несколько раз. Многие пользователи подтвердили, что это простое действие решает проблему.
Если вы не хотите выполнять полный сброс, вы можете удерживать нажатой клавишу Shift и нажимать экранную кнопку питания, выбрать вариант перезапуска, удерживая клавишу Shift, а затем выбрать «Перейти к Windows 10».
Это заставит Windows восстанавливать поврежденные или поврежденные файлы обновления.
Узнайте все, что нужно знать об управлении учетными записями пользователей, из нашего замечательного руководства!
Решение 2. Загрузитесь в безопасном режиме и удалите обновления безопасности
1. Удерживая клавишу Shift, нажмите кнопку питания на экране.
2. Выберите опцию перезапуска, удерживая клавишу Shift
3. Выберите Устранение неполадок> Дополнительные параметры> Параметры запуска> нажмите Перезагрузить
4. Дождитесь перезагрузки Windows 10 и выберите Безопасный режим.
5. Перейдите в раздел «Обновления и безопасность»> «Центр обновления Windows»> «Дополнительные параметры»> «Просмотр истории обновлений»> «удалите последние обновления»> перезагрузите компьютер.
Многие пользователи сообщают, что кумулятивными являются накопительные обновления KB3135173 и KB3124262, и удаление этих двух обновлений устранило проблему.
Решение 3. Обновление Citrix VDA
Если вы используете VDA v7.7, загрузите более новые версии VDA 7.8 или более поздней версии, в которых содержится исправление. Для получения дополнительной информации и пошагового руководства перейдите на страницу поддержки Citrix.
Тузик
В начале моей карьеры я пытался создать небольшое приложение, в котором нужно было хранить информацию о пользователях. И тогда я думал, а как мне сопоставить пользователя к его данным. Есть, например, у меня Иванов Иван Иваныч, и есть у него какие-то данные, но как их подружить? Я могу указать напрямую, что собака по имени «Тузик» принадлежит этому самому Ивану. Но что, если он сменит имя и вместо Ивана станет, например, Олей? Тогда получится, что наша Оля Ивановна Иванова больше не будет иметь собаки, а наш Тузик все еще будет принадлежать несуществующему Ивану. Решить эту проблему помогла база данных, которая каждому пользователю давала уникальный идентификатор (ID), и мой Тузик привязывался к этому ID, который, по сути, был просто порядковым номером. Таким образом хозяин у тузика был с ID под номером 2, и на какой-то момент времени под этим ID был Иван, а потом под этим же ID стала Оля. Проблема человечества и животноводства была практически решена.
Исправлено: «Неверный дескриптор» в Windows XP, Vista, Windows 7 и 8.1
Что касается более старых версий Windows, ошибка «Неверный дескриптор» возникает при печати, при попытке скопировать код или текст, при использовании Synergy для совместного использования мыши и клавиатуры между несколькими компьютерами и т. Д.
Решение 1. Установите последние обновления или обновите до Windows 10 .
Microsoft регулярно выпускает обновления для всех поддерживаемых версий Windows. Перейдите в Пуск> введите «обновление»> нажмите «Проверить наличие обновлений»> установить доступные обновления.
Microsoft по-прежнему предлагает Windows 10 в качестве бесплатного обновления с помощью помощника по обновлению для пользователей Windows 7 и Windows 8.1.
Если ваш компьютер совместим с Creators Update, нажмите кнопку обновления, чтобы установить его.
Решение 2. Обновите приложение, подверженное этой ошибке
Установка последней версии приложения, затронутая ошибкой «Неверный дескриптор», может помочь вам решить проблему.
Для этого вы можете использовать кнопку обновления приложения или перейти на официальный веб-сайт приложения и установить последнюю версию оттуда.
Решение 3 – Загрузите универсальный драйвер печати HP
Если из-за ошибки «Неверный дескриптор» вы не можете использовать принтер, загрузите универсальный драйвер печати HP.Этот инструмент автоматически обнаруживает и настраивает поддерживаемые устройства HP и некоторые устройства не HP.
Вы можете загрузить универсальный драйвер печати HP для Windows 7 и новее с веб-сайта HP.
Однажды, на одном интервью меня спросили, что ты будешь делать, если обнаружишь неработающий сервис из-за того, что на диске закончилось место?
Конечно же я ответил, что посмотрю, чем занято это место и если возможно, то почищу место.
Тогда интервьюер спросил, а что если на разделе нет свободного места, но и файлов, которые бы занимали все место, ты тоже не видишь?
На это я сказал, что всегда можно посмотреть открытые файл дескрипторы, например командой lsof и понять какое приложение заняло все доступное место, а дальше можно действовать по обстоятельствам, в зависимости от того, нужны ли данные.
Интервьюер прервал меня на последнем слове, дополнив свой вопрос: «Предположим, что данные нам не нужны, это просто дебаг лог, но приложение не работает из-за того, что не может записать дебаг»?
«окей», — ответил я, «мы можем выключить дебаг в конфиге приложения и перезапустить его».
Интервьюер возразил: «Нет, приложение мы перезапустить не можем, у нас в памяти все еще хранятся важные данные, а к самому сервису подключены важные клиенты, которых мы не можем заставлять переподключаться заново».
«ну хорошо», сказал я, «если мы не можем перезапускать приложение и данные нам не важны, то мы можем просто очистить этот открытый файл через файл дескриптор, даже если мы его не видим в команде ls на файловой системе».
Интервьюер остался доволен, а я нет.
Тогда я подумал, почему человек, проверяющий мои знания, не копает глубже? А что, если данные все-таки важны? Что если мы не можем перезапускать процесс, и при этом этот процесс пишет на файловую систему в раздел, на котором нет свободного места? Что если мы не можем потерять не только уже записанные данные, но и те данные, что этот процесс пишет или пытается записать?
Redirect и Pipe
Вы можете легко переопределить эти 3 файл дескриптора в любом процессе, в том числе и в bash, например через трубу(pipe), соединяющую два процесса, смотрим
Вы можете сами запустить эту команду с strace -f и увидеть, что происходит внутри, но я вкратце расскажу.
Наш родительский процесс bash с PID 15771 парсит нашу команду и понимает сколько именно команд мы хотим запустить, в нашем случае их две: cat и sleep. Bash знает что ему нужно создать два дочерних процесса, и объединить их одной трубой. Итого bash потребуется 2 дочерних процесса и один pipe.
Перед созданием дочерних процессов bash запускает системный вызов pipe и получает новые файл дескрипторы на временный буфер pipe, но этот буфер никак пока не связывает наши два дочерних процесса.
Для родительского процесса это выглядит так будто pipe уже есть, а дочерних процессов еще нет:
Затем с помощью системного вызова clone bash создает два дочерних процесса, и наши три процесса будут выглядеть так:
Не забываем, что clone клонирует процесс вместе со всеми файл дескрипторами, поэтому в родительском процессе и в дочерних они будут одинаковые. Задача родительского процесса с PID 15771 следить за дочерними процессами, поэтому он просто ждет ответ от дочерних.
Следовательно pipe ему не нужен, и он закрывает файл дескрипторы с номерами 3 и 4.
В первом дочернем процессе bash с PID 9004, системным вызовом dup2, меняет наш STDOUT файл дескриптор с номером 1 на файл дескриптор указывающий на pipe, в нашем случае это номер 3. Таким образом все, что первый дочерний процесс с PID 9004 будет писать в STDOUT, будет автоматически попадать в буфер pipe.
Во втором дочернем процессе с PID 9005 bash меняет с помощью dup2 файл дескриптор STDIN с номером 0. Теперь все, что будет читать наш второй bash с PID 9005, будет читать из pipe.
После этого в дочерних процессах так же закрываются файл дескрипторы с номерами 3 и 4, так как они более не используются.
Файл дескриптор 255 я намеренно игнорирую, он использует для внутренних нужд самого bash и в дочерних процессах будет также закрыт.
Далее в первом дочернем процессе с PID 9004 bash запускает с помощью системного вызова exec исполняемый файл, который мы указали в командной строке, в нашем случае это /usr/bin/cat.
Во втором дочернем процессе с PID 9005 bash запускает второй исполняемый файл, который мы указали, в нашем случае это /usr/bin/sleep.
Системный вызов exec не закрывает файл дескрипторы, если они не были открыты с флагом O_CLOEXEC во время выполнения вызова open. В нашем случае после запуска исполняемых файлов все текущие файл дескрипторы сохранятся.
Проверяем в консоли:
Как видите уникальный номер нашего pipe у нас в обоих процессах совпадает. Таким образом у нас есть связь между двумя разными процессами с одним родителем.
Для тех, кто не знаком с системными вызовами, которые использует bash, крайне рекомендую запустить команды через strace и посмотреть, что происходит внутри, например, так:
Вернемся к нашей проблеме с нехваткой места на диске и попыткой сохранить данные без перезапуска процесса. Напишем небольшую программу, которая будет записывать на диск примерно 1 мегабайт в секунду. При этом если по какой-либо причине мы не смогли записать данные на диск, мы будем просто игнорировать это и пытаться записать данные вновь через секунду. В примере я использую Python, вы можете использовать любой другой язык программирования.
Запустим программу и посмотрим на файл дескрипторы
Как видим у нас есть наши 3 стандартные файл дескрипторы и еще один, который мы открыли. Проверим размер файла:
данные пишутся, пробуем поменять права на файл:
Видим, что данные все еще пишутся, хотя наш пользователь не имеет права писать в файл. Попробуем его удалить:
Куда пишутся данные? И пишутся ли вообще? Проверяем:
Да, наш файл дескриптор все еще существует, и мы можем работать с этим файл дескриптором как с нашим старым файлом, мы можем его читать, очищать и копировать.
Смотрим на размер файла:
Размер файла 19923457. Пробуем очистить файл:
Как видим размер файла только увеличивается и наш транкейт не сработал. Обратимся к документации по системному вызову open. Если при открытии файла мы используем флаг O_APPEND, то при каждой записи операционная система проверяет размер файла и пишет данные в самый конец файла, причем делает это атомарно. Это позволяет нескольким тредам или процессам писать в один и тот же файл. Но в нашем коде мы не используем этот флаг. Мы можем увидеть другой размер файла в lsof после транкейт только если откроем файл для дозаписи, а значит в нашем коде вместо
мы должны поставить
Проверяем с «w» флагом
«Недопустимый дескриптор»
Есть две основные причины этой ошибки: последнее обновление Windows 10 не было установлено правильно или некоторые системные файлы были повреждены или повреждены. Вот как один пользователь описывает эту проблему:
Поэтому я только что установил обновление, и какое-то время оно работало просто замечательно.
Но теперь все шло как с ума, а BSOD […] я попытался перезагрузить компьютер, и он выдал «Неверный дескриптор». […]
Другая проблема – когда я нажимаю кнопку выключения после того, как дескриптор недействителен, он остается включенным и не выключается.
В Windows 10 эта ошибка также блокирует процесс печати, в результате чего пользователи не могут добавить принтер или использовать уже установленный.
Ошибка «Неверный дескриптор» также влияет на более старые версии Windows, не позволяя пользователям устанавливать какие-либо обновления или программное обеспечение на свои компьютеры.
4. Ремонт Акробата
1. Обновите программное обеспечение Acrobat
Ошибка сервера DDE, скорее всего, возникнет в более старых версиях Adobe Acrobat. Возможно, Adobe выпустила обновление, устраняющее проблему с сервером DDE. Таким образом, обновление Acrobat до последней версии может решить проблему для некоторых пользователей.
Пользователи могут обновить программное обеспечение, нажав Справка > Проверить наличие обновлений в Acrobat. Это откроет окно Updater, которое устанавливает обновления. Кроме того, пользователи могут удалить программное обеспечение и переустановить его следующим образом.
- Нажмите правой кнопкой мыши меню «Пуск» и выберите Выполнить .
- Введите “appwiz.cpl” в текстовое поле и нажмите ОК .
- Перезагрузите Windows после удаления Adobe Acrobat.
- Затем откройте страницу Adobe Acrobat в браузере.
- Нажмите Установить сейчас , чтобы добавить последнюю версию программного обеспечения Acrobat в Windows 10.
– СВЯЗАННО: Почему мой компьютер не распознает Adobe Flash Player в IE?
Программируем уже запущенный процесс
Часто программисты при создании и тестировании программы используют дебагеры (например GDB) или различные уровни логирования в приложении. Linux предоставляет возможность фактически писать и менять уже запущенную программу, например менять значения переменных, устанавливать breakpoint и тд и тп.
Возвращаясь к оригинальному вопросу с нехваткой места на диске для записи файла, попробуем сэмулировать проблему.
Создадим файл для нашего раздела, который мы подмонтируем как отдельный диск:
Создадим файловую систему:
Подмонтируем файловую систему:
Создаем директорию с нашим владельцем:
Откроем файл только на запись в нашей программе:
Ждем несколько секунд
Итак, мы получили проблему, описанную в начале этой статьи. Свободного места 0, занятого 100%.
Мы помним, что по условиям задачи мы пытаемся записать очень важные данные, которые нельзя потерять. И при этом нам нужно починить сервис без перезапуска процесса.
Допустим, у нас все же есть место на диске, но в другом разделе, например в /home.
Попробуем «перепрограммировать на лету» наш код.
Смотрим PID нашего процесса, который съел все место на диске:
Подключаемся к процессу через gdb
Смотрим открытые файл дескрипторы:
Смотрим информацию о файл дескрипторе с номером 3, который нас интересует
Помня о том, какой системный вызов делает Python (смотрите выше, где мы запускали strace и находили вызов open), обрабатывая наш код для открытия файла, мы делаем то же самое самостоятельно от имени нашего процесса, но биты O_WRONLY|O_CREAT|O_TRUNC нам нужно заменить на числовое значение. Для этого открываем исходники ядра, например тут и смотрим какие флаги за что отвечают
Объединяем все значения в одно, получаем 00001101
Запускаем наш вызов из gdb
Итак мы получили новый файл дескриптор с номером 4 и новый открытый файл на другом разделе, проверяем:
Мы помним пример с pipe — как bash меняет файл дескрипторы, и уже выучили системный вызов dup2.
Пробуем подменить один файл дескриптор другим
Закрываем файл дескриптор 4, так как нам он не нужен:
И выходим из gdb
Проверяем новый файл:
Как видим, данные пишутся в новый файл, проверяем старый:
Данные не потеряны, приложение работает, логи пишутся в новое место.
5. Отключите защищенный режим при запуске
Отмена выбора параметров Защищенный режим при запуске и Повышенная безопасность – это еще одно решение, которое исправило ошибку сервера DDE у некоторых пользователей Acrobat. Чтобы сделать это, нажмите Изменить > Настройки в Acrobat, чтобы открыть окно на снимке непосредственно ниже.
- Нажмите Безопасность (улучшенная) в левой части этого окна, чтобы открыть параметры, показанные ниже.
- Снимите флажок Включить защищенный режим при запуске .
- Снимите флажок с Включить усиленную безопасность .
- Закройте окно настроек и Adobe Acrobat.
- После этого откройте Adobe, чтобы увидеть, исправило ли это разрешение ошибку сервера DDE.
3. Изменить реестр
Это изменение реестра является одним из официальных разрешений Adobe для ошибки DDE. Для редактирования требуется, чтобы пользователи изменили ключ приложения для Acrobat. Следуйте инструкциям ниже для редактирования реестра.
- Сначала нажмите клавишу Windows + X горячую клавишу.
- Выберите Запустить , чтобы открыть этот аксессуар.
- Введите «regedit» в текстовое поле и нажмите Enter, чтобы открыть редактор реестра.
- Введите этот путь реестра в адресной строке: ComputerHKEY_CLASSES_ROOTacrobatshellopenddeexecapplication.
- Выберите ключ приложения слева от окна редактора реестра.
- Дважды щелкните Default, чтобы открыть окно Edit String, показанное непосредственно ниже.
- Затем удалите текущий текст «AcroviewA18» или «AcroviewA19» в поле «Значение».
- Введите «AcroviewR18» в поле «Значение», если исходное значение было «AcroviewA18». Обратите внимание, что значения A и R зависят от установленной версии, поэтому некоторым пользователям может потребоваться ввести «AcroviewR19».
- Затем нажмите кнопку ОК .
- Перезагрузите Windows после редактирования реестра.
2. Отключите антивирусное программное обеспечение
Некоторые сторонние антивирусные утилиты могут помечать Adobe Acrobat при попытке объединения PDF-файлов. Таким образом, отключение антивирусного программного обеспечения является еще одним потенциальным разрешением ошибки DDE.
Обычно пользователи могут временно отключить антивирусное программное обеспечение, щелкнув правой кнопкой мыши значки на панели задач и выбрав параметр отключения, выхода, приостановки или отключения. Если в контекстном меню программного обеспечения нет параметра отключения, откройте главное окно утилиты и найдите параметр отключения на вкладке настроек.
Читайте также: