The rpc server is unavailable word

Обновлено 15.02.2022

the rpc server is unavailable

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали замечательную утилиту командной строки robocopy, и с ее помощью научились создавать точные копии папок, двигать их в нужное расположение и многое другое. В сегодняшней публикации я покажу вам, как устранять ошибку «Сервер RPC недоступен (The rpc server is unavailable)», покажу примеры, когда ее мониторинг очень важен в работе корпоративных сервисов.

Для чего нужна служба «Удаленный вызов процедур (RPC)»

Удаленный вызов процедур (RPC) — это  протокол,  который одна программа может использовать для запроса услуги у программы, расположенной на другом компьютере в сети, без необходимости разбираться в деталях сети. RPC используется для вызова других процессов на удаленных системах, таких как локальная система. Вызов процедуры также иногда называют вызовом функции или вызовом подпрограммы .

RPC использует модель  клиент-сервер. Запрашивающая программа — это клиент, а программа, предоставляющая услуги, — это сервер. Подобно обычному или локальному вызову процедуры, RPC — это  синхронная операция, требующая приостановки запрашивающей программы до тех пор, пока не будут возвращены результаты удаленной процедуры. Однако использование облегченных процессов или потоков, которые совместно используют одно и то же адресное пространство, позволяет одновременно выполнять несколько RPC.

Язык определения интерфейса (IDL) — язык спецификации, используемый для описания интерфейса прикладного программирования (API) программного компонента — обычно используется в программном обеспечении удаленного вызова процедур. В этом случае IDL обеспечивает мост между машинами на обоих концах связи, которые могут использовать разные операционные системы (ОС) и компьютерные языки.

Процедура сообщения RPC

Когда программные операторы, использующие структуру RPC, компилируются в исполняемую программу, в скомпилированный код включается заглушка, которая выступает в качестве представителя кода удаленной процедуры. Когда программа запускается и выполняется вызов процедуры, заглушка получает запрос и пересылает его клиентской программе и времени выполнения на локальном компьютере. При первом вызове клиентской заглушки она связывается с сервером имен, чтобы определить транспортный адрес, по которому находится сервер.

Программа среды выполнения клиента знает, как обращаться к удаленному компьютеру и серверному приложению, и отправляет сообщение по сети, которое запрашивает удаленную процедуру. Точно так же сервер включает исполняющую программу и заглушку, которая взаимодействует с самой удаленной процедурой. Протоколы ответа-запроса возвращаются таким же образом.

Данная служба есть в любой операционной системе Windows, начиная от Windows 7 и заканчивая Windows 11 и в любой из Windows Server редакции.

Как работает RPC?

Когда вызывается служба RPC (удаленный вызов процедуры), вызывающая среда приостанавливается, параметры процедуры передаются по сети в среду, в которой должна выполняться процедура, а затем процедура выполняется в этой среде. Когда процедура завершается, результаты передаются обратно в вызывающую среду, где выполнение возобновляется, как если бы оно возвращалось из обычного вызова процедуры.

Во время RPC выполняются следующие шаги:

  1. Клиент вызывает клиентскую заглушку. Вызов представляет собой вызов локальной процедуры с параметрами, помещенными в стек обычным способом.
  2. Клиентская заглушка упаковывает параметры процедуры в сообщение и выполняет системный вызов для отправки сообщения. Упаковка параметров процедуры называется маршалингом.
  3. Локальная ОС клиента отправляет сообщение с клиентского компьютера на удаленный сервер.
  4. Серверная ОС передает входящие пакеты на серверную заглушку.
  5. Заглушка сервера распаковывает параметры из сообщения — это называется демаршалингом .
  6. Когда серверная процедура завершается, она возвращается к серверной заглушке, которая маршалирует возвращаемые значения в сообщение. Затем заглушка сервера передает сообщение на транспортный уровень.
  7. Транспортный уровень отправляет полученное сообщение обратно на клиентский транспортный уровень, который возвращает сообщение клиентской заглушке.
  8. Клиентская заглушка не упорядочивает возвращаемые параметры, и выполнение возвращается вызывающей стороне.

Клиент RPC по 135 порту подключается к службе RPC Endpoint Mapper (сопоставления конечных точек), а далее уже запрашивает номер порта, где запущено нужное RPC приложение. Служба сопоставления конечных точек вернет клиенту RPC номер динамического RPC порта (диапазон 1024 – 65535), на котором работает нужная служба. Дальше уже все взаимодействие идет по TCP порту

Если вы видите ошибку «Сервер RPC недоступен” (The RPC server is unavailable)», то у вас точно недоступен порт 135. Это может быть критичным для ряда ситуации. Например вы не сможете сохранить настройки RDS фермы, если у одного из хостов RDSH есть проблемы с RPC, то вы будите видеть ошибку «Could not change the connection state for server», вы не сможете перевести его в режим обслуживания (Drain Mode)

Could not change the connection state for server

Или в приложении Terminal Services Manager будет ошибка при попытке получения данных «Сервер RPC недоступен«.

Сервер RPC недоступен

Так же RPC может быть причиной проблемы в репликации контроллеров домена, где в логах Windows будет фигурировать ошибка ID 1722. Это очень не приятный момент, который может привести к большим проблемам.

Типы RPC

Существует пять типов RPC:

  1. Обычный метод работы, при котором клиент выполняет вызов и не продолжает работу до тех пор, пока сервер не вернет ответ.
  2. Клиент звонит и продолжает свою обработку. Сервер не отвечает.
  3. Средство для отправки нескольких клиентских неблокирующих вызовов в одном пакете.
  4. У клиентов RPC есть средство широковещательной рассылки, т. е. Они могут отправлять сообщения на множество серверов, а затем получать все полученные ответы.
  5. Клиент делает неблокирующий вызов клиент/сервер; сервер сигнализирует о завершении вызова путем вызова процедуры, связанной с клиентом.

Почему может не работать служба RPC

  1. Удаленный компьютер с которым идет взаимодействие выключен
  2. На удаленном сервере не запущена или перестала работать служба RPC
  3. Подключение по RPC происходит не к тому серверу (Может быть проблема с DNS или IP адресом)
  4. Есть блокировки между клиентом и сервером на фаэрволе
  5. Используются некорректные настройки сетевого подключение на клиенте или сервере

Преимущества удаленного вызова процедур

К преимуществам удаленного вызова процедур можно отнести следующее:

  • помогает клиентам общаться с серверами посредством традиционного использования вызовов процедур на языках высокого уровня;
  • может использоваться как в распределенной, так и в локальной среде;
  • поддерживает процессно-ориентированные и поточно-ориентированные модели;
  • скрывает внутренний механизм передачи сообщений от пользователя;
  • требует минимальных усилий для переписывания и повторной разработки кода;
  • обеспечивает абстракцию, т. е. характер передачи сообщений по сети скрыт от пользователя;
  • опускает многие уровни протокола для повышения производительности.

Недостатки RPC

Некоторые из недостатков RPC включают следующее:

  • Клиент и сервер используют разные среды выполнения для своих соответствующих подпрограмм, и использование ресурсов, например файлов, также является более сложным. Следовательно, системы RPC не подходят для передачи больших объемов данных.
  • RPC очень уязвим для сбоев, потому что он включает в себя систему связи, другую машину и другой процесс.
  • Единого стандарта для RPC не существует; это может быть реализовано множеством способов.
  • RPC основан только на взаимодействии и, как таковой, не предлагает гибкости, когда дело касается аппаратной архитектуры.

Проверка доступности службы RPC

  • Как я и писал выше, в первую очередь вы должны убедиться, что удаленный компьютер к которому вы делаете проверку RPC доступен по сети. Для этого элементарно откройте командную строку или оболочку PowerShell и воспользуйтесь командой Ping, NSlookup, Test-NetConnection. Я буду производить проверку службы удаленного вызова в PowerShell. Выполним для начала команду Ping. Мой удаленный сервер называется SVT201S01.root.pyatilistnik.org. Пишем команду:

ping SVT201S01.root.pyatilistnik.org

Если вдруг компьютер не ответил, то это не значит, что он не работает, может работать брандмауэр и просто блокировать ping пакеты.Проверка доступности службы RPC через ping

  • Далее выполните Nslookup, чтобы удостовериться, что нужное вам имя компьютера преобразовывается в нужный IP-адрес. Выполните:

nslookup SVT201S01.root.pyatilistnik.org

Небольшой пример из практики, предположим, что вы мигрировали сервер в другую подсеть, в итоге в DNS должна быть изменена соответствующая запись, но Windows это поймет не сразу, так как у нее есть свой локальный кэш, он живет 15 минут, поэтому если при проверке DNS имени вам выдается не тот IP-адрес, вам необходимо произвести очистку кэша DNS.

Проверка доступности службы RPC через nslookup

  • Далее я вам советую проверить отвечает ли порт. Напоминаю, что служба RPC Endpoint Mapper слушает порт под номером 135. В PowerShell введите команду:

Test-NetConnection svt2019s01.root.pyatilistnik.org -Port 135

Если удаленный RPC порт доступен вы в в строке TcpTestSucceeded будет стоять статус «True».

Проверка доступности службы RPC через Test-NetConnection

Если будет порт закрыт или блокируется, то ошибка «Сервер RPC недоступен (The rpc server is unavailable)» вам обеспечена. Поняв, что порт не отвечает, нужно удостовериться, что трафик от клиента до сервера не блокирует фаервол. По умолчанию в любой версии Windows есть встроенный брандмауэр. На время тестирования и поиска причины, я советую его выключить для всех профилей. Сделаем мы это через командную строку:

Netsh Advfirewall set allprofiles state off

Данная команда выключит брандмауэр на всех трех профилях сетевой карты.

Отключение брандмауэра Windows через командную строку

Далее если порт 135 стал доступен, то можно делать правила на удаленном сервере. Напоминаю, что нужно сделать правило для трех служб:

  1. Remote Procedure Call (RPC) — Удаленный вызов процедур (RPC)
  2. RPC Endpoint Mapper — Сопоставитель конечных точек RPC
  3. COM Server Process Launcher — Модуль запуска процессов DCOM-сервера

Подробнее, о том как сделать правила — https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-firewall/create-inbound-rules-to-support-rpc)

Еще хочу отметить, что если у вас есть сторонние антивирусные решения, например Касперский, то там так же есть встроенный сетевой экран, где так же нужно будет создать необходимые, разрешающие правила, которые корректно будут обрабатывать трафик динамических RPC портов.

Проверка работы служб RPC

Следующим шагом является проверка состояния службы на нужном вам сервере или компьютере. Проверять следует три службы:

  1. Remote Procedure Call (RPC) — Удаленный вызов процедур (RPC)
  2. RPC Endpoint Mapper — Сопоставитель конечных точек RPC
  3. COM Server Process Launcher — Модуль запуска процессов DCOM-сервера

В оболочке PowerShell выполните команду:

Для локального сервера — Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType

Для удаленного выполнения Enter-PSSession svt2019s01 далее Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType

Напоминаю, что в команде svt2019s01, это имя удаленного сервера. Как видно из примера, все службы RPC запущены и имею автоматический тип запуска.

Проверка состояния служб RPC

Если службы не запущены, то откройте оснастку «services.msc’, зайдите в свойства службы и выставите автозапуск и попробуйте запустить вручную.

services.msc

Если по каким, то причинам вы не можете запустить службу из оснастки, то можно это сделать через реестр (Кстати реестр можно править и удаленно). Для этого есть несколько веток, но для начала откройте окно «Выполнить» и введите regedit.

Запуск реестра Windows

  • Модуль запуска процессов DCOM-сервера — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesDcomLaunch
  • Сопоставитель конечных точек RPC — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRpcEptMapper
  • Удаленный вызов процедур (RPC) — ветка реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRpcSs

В каждом из этих расположений есть ключик «Start«, выставите ему значение «2«, это будет означать автоматический запуск службы.

Управление автозапуском службы через реестр

Дополнительные сетевые проверки

В некоторых случаях причиной ошибок с доступностью RPC выступает сбой на сетевых адаптерах. Помогает сброс сетевых настроек и перезагрузка. В сети с Active Directory, старайтесь, чтобы на всех ваших сетевых адаптерах в свойствах были выставлены обе галки IPV4 и IPV6, особенно это актуально для контроллеров домена, где вы легко можете получать ошибку 1722. Еще может помочь отключение протокола Teredo у IPv6. В командной строке выполните:

netsh interface teredo set state disabled

Для включения обратно введите:

netsh interface teredo set state enabled

Еще на сайте Майкрософт пишут, что необходимо на сервере RPC иметь включенную службу «Удаленный реестр«. На этом у меня все, с вами был Иван Сёмин, автор и создатель IP портала Pyatilistnik.org.

Hello,

I am having problems using Microsoft.Office.Interop.Word with C#. I have MS Office Professional Plus x64 and I’m using VS 2010. I use C# to load a list of keywords from an Excel file. Then I use Word’s Find to count the number of times each keyword appears
in a set of Word documents. This whole process takes awhile, since there are more than 450 keywords and some 200 files split over 4 folders. I handle each folder separately to shorten things a little. Sometimes the program successfully completes but sometimes
I get an exception with the message «The RPC server is unavailable (Exception from HRESULT: 0x800706BA)». I’ve tried a combination of things suggested on this forum but I haven’t been able to get the program to work reliably. Since I don’t know how to fix
it, I am hoping someone with more experience will be able to help me. I’ve seen other people mention that it indicates a memory related problem (something not being released properly) so I guess you should check that first.

I am posting the entire class used for searching the Word documents together with comments as well as a more thorough description of the process below the code. The description is long so it would probably be easier to figure things out from the code and
use the description if something’s not clear. I omitted the rest of the code because it doesn’t seem relevant, since it’s just a WinForm which calls the various methods of the KeywordSeeker class and presents the data to the user (and writes the final table
to a CSV file). I can add that later if required.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
using System.Runtime.InteropServices;

namespace Keyword_search
{
    /// <summary>
    /// Class which handles the keyword seek and count operation. Use the seek() method to start the operation.
    /// </summary>
    /// <seealso cref="KeywordSeeker.seek()"/>
    class KeywordSeeker
    {
        /// <summary>
        /// MS Office Word 2010 application object.
        /// </summary>
        Word.Application wApp;

        /// <summary>
        /// Collection containing all open MS Office Word 2010 documents.
        /// </summary>
        Word.Documents wDocs;

        /// <summary>
        /// Start Word.
        /// </summary>
        public void startWord()
        {
            wApp = new Word.Application();
        }

        /// <summary>
        /// Quit Word and release memory.
        /// </summary>
        public void quitWord()
        {
            wApp.Quit();
            Marshal.FinalReleaseComObject(wDocs);
            Marshal.FinalReleaseComObject(wApp);
        }

        /// <summary>
        /// Get the list of keywords from the specified MS Office Excel 2010 file.
        /// </summary>
        /// <param name="filePath">Path to the MS Office Excel file containing the list of keywords.</param>
        /// <returns>List of strings containing keywords.</returns>
        public string[] getKeywordList(string filePath)
        {
            Excel.Application eApp = new Excel.Application();
            Excel.Workbooks eWBooks = eApp.Workbooks;
            Excel.Workbook ew;
            Excel.Worksheet ews;
            Excel.Range er;

            ew = eWBooks.Open(filePath);
            ews = (Excel.Worksheet)ew.Sheets.get_Item(1);
            er = ews.UsedRange;
            string[] keywords = new string[er.Rows.Count];

            for (int rNum = 1; rNum <= er.Rows.Count; ++rNum )
                keywords[rNum-1] = (er.Cells[rNum, 1] as Excel.Range).Value2.ToString();

            ew.Close(true);
            //Marshal.FinalReleaseComObject(ew);
            //Marshal.FinalReleaseComObject(eWBooks);
            eApp.Quit();
            //Marshal.FinalReleaseComObject(eApp);
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            return keywords;
        }

        /// <summary>
        /// Performs MS Office Word's Find operation on the document using the specified keywords.
        /// </summary>
        /// <param name="filePath">Path to the file on which the seek operation will be performed.</param>
        /// <param name="keywordList">List of keywords whose frequency is sought.</param>
        /// <returns>ArrayList containing two values: the first is a boolean used for determining whether the operation succeeded or not.
        /// The second is a Dictionary containing key/value pairs of keywords and amount of times each keyword appears in the document.</returns>
        public ArrayList seek(ref string filePath, ref string[] keywordList)
        {
            ArrayList resultSet = new ArrayList(2);
            Dictionary<string, int> wordFrequency = new Dictionary<string, int>();
            //Set the return value as true initially.
            resultSet.Add(true);
            wDocs = wApp.Documents;
            Word.Document wd = new Word.Document();

            /**
             * This is an ArrayList of ArrayLists. Each inner ArrayList contains keywords with the same word count, e.g. wordsInKey[1] contains keywords consisting of only one word,
             * wordsInKey[2] contains keywords with two words and so on.
             **/
            ArrayList wordsInKey = new ArrayList();
            //Add an empty ArrayList which covers keywords with 0 words. This will obviously never be filled with any actual data.
            wordsInKey.Add(new ArrayList());
            /**
             * Split the keywords and place them in the correct ArrayList. This is done because the Find operation will start with keywords containing the most words,
             * and move on to ones with fewer words. If this weren't the case, the algorithm wouldn't get the correct frequency, because it would find smaller keywords in larger ones as well.
             * For example if there were two keywords named "reference" and "complete reference", the algorithm would count all the appearances of the keyword "reference",
             * as well as all of its appearances in "complete reference". Furthermore since the algorithm deletes the keywords from the text after finding them,
             * if the "reference" keyword were to be sought first, the "complete reference" keyword count would be 0 (since the word "reference" was previously deleted).
             **/
            foreach (string s in keywordList)
            {
                wordFrequency.Add(s, 0);
                string[] splitString = s.Split(' ');
                if (splitString.Length >= wordsInKey.Count)
                {
                    for (int i = wordsInKey.Count; i <= splitString.Length; ++i)
                    {
                        wordsInKey.Add(new ArrayList());
                    }
                }
                ((ArrayList)wordsInKey[splitString.Length]).Add(s);
            }

            try
            {
                wd = wDocs.Open(filePath);
                for (int i = wordsInKey.Count - 1; i > 0; --i)
                {
                    foreach (string s in (ArrayList)wordsInKey[i])
                    {
                        //The range is set to the entire document.
                        Word.Range docRange = wd.Range(wd.Paragraphs[1].Range.Start, wd.Paragraphs[wd.Paragraphs.Count].Range.End);
                        bool keyWordFound = true;
                        do
                        {
                            keyWordFound = docRange.Find.Execute(s, Missing.Value, true, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, "", Word.WdReplace.wdReplaceOne);
                            //If the keyword is found, check that it is part of the text (the titles and other non-text styles are ignored).
                            if (keyWordFound == true)
                            {
                                Word.Style st = (Word.Style)docRange.get_Style();
                                switch (st.NameLocal)
                                {
                                    case "DESIGNBulletedList":
                                    case "DESIGNFigureCaption":
                                    case "DESIGNNumberedList":
                                    case "DESIGNTableCaption":
                                    case "DESIGNTableText":
                                    case "DESIGNText":
                                        wordFrequency[s]++;
                                        break;
                                    default:
                                        break;
                                }
                            }
                        } while (keyWordFound == true);
                        Marshal.FinalReleaseComObject(docRange);
                    }
                }
                wd.Close(true);
                wd = null;

                //Marshal.FinalReleaseComObject(wDocs);
                GC.Collect();
                GC.WaitForPendingFinalizers();
                GC.Collect();
                //Marshal.FinalReleaseComObject(wd);
            }
            catch (Exception e)
            {
                wd.Close(false);
                Marshal.FinalReleaseComObject(wd);
                Marshal.FinalReleaseComObject(wDocs);
                resultSet[0] = false;
                resultSet.Add(e.Message);
                return resultSet;
            }
            resultSet.Add(wordFrequency);
            return resultSet;
        }
    }
}

The program will first read the keywords from an Excel file using getKeywordList, then start Word using startWord(). After that the seek() method is called with the path to the Word file and the list of keywords (I’ve made a mistake here — it would be better
if the list of keywords was a member of the class). seek() is called a number of times (~50), once for each Word document in the folder. The data is stored in a DataTable which is connected to a DataGridView which displays the results. After the entire process
is finished, the data will be written to a CSV file and the program will quit Word using quitWord().

A more in-depth description of what happens in seek():

The resultSet ArrayList is used as a return value and contains two values: a bool which determines whether the method finished successfully and a Dictionary containing the frequencies of keywords.

The wordFrequency Dictionary contains key-value pairs of keyword names and their frequencies. It will be stored in the resultSet ArrayList mentioned above.

After the initialization the keyword list is «sorted» into the wordsInKey ArrayList. wordsInKey contains ArrayLists of keywords, with each of them containing keywords with the same number of words. Thus wordsInKey[1] will contain an ArrayList of keywords
with only one word (e.g. «decision»), wordsInKey[2] will have keywords with two words (e.g. «design decision») etc. An empty dummy ArrayList will be added before the sort to cover the index 0 of wordsInKey. The sort should have taken place in getKeywordList(),
because right now it’s repeated every time. That’s bad code, but it doesn’t matter right now, so just ignore that fact. The following paragraph explains why sorting is necessary, so you can skip it if you’re not interested.

Each keyword can contain multiple words so often the same word can appear in other keywords. The program shouldn’t count occurrences of keywords in other keywords. To prevent this, the keywords are sorted by the number of words they contain. The ones containing
the most words are searched first and then deleted from the document to prevent repeated counts. For example, if the keywords are «design decision» and «decision», the word decision obviously appears in both keywords. If the program searched for «decision»,
it would count all occurrences where it appears, including the case when it appears as part of «design decision», which is undesirable. Therefore, «design decision» will be searched first (because it contains more words) and the occurrence will be deleted
from the document, preventing multiple counts.

Once the sort is done, the program will search for each keyword in the document, starting with the ones with the most words. For each keyword, the Range is set to the entire document and then Find.Execute() is called with an empty string used to replace
the keyword (effectively deleting the keyword). When the keyword is found, the style of the text is checked with a switch. Each of the documents has styles applied to its parts, but only the ones in the program are counted (the rest are titles and so on, so
it makes no sense to count them). It would have made more sense to me to check each paragraph for the style before performing Find.Execute(), but apparently if I set the range to the paragraph, Find will completely ignore this and search the entire document
anyway which is counter-intuitive to me. I can provide an example dummy document with the correct styles applied to it, but I’m not sure what the preferred method is.

The rest of the code attempts to do clean up as suggested by others, but it looks like I’m doing something wrong. Sometimes the process will work fine on the same set of documents and other times it will crash with no discernible pattern.

Thank you in advance for the help and sorry for the long post.

Edit: In the Build group of the project properties, Platform target is set to x64, if that’s any help.

I am working on a utility to find and update DOC VARIABLES in Word. I have a section of code to loop through the documents and present a Message Box with the variable name, but I’m receiving an error when it tries to open the next document. The error is:

System.Runtime.InteropServices.COMException: ‘The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

I’m confused because my code does not access any network. I think what might be happening is the Word is closing when the document closes, but I cannot find a solution to prevent that.

Other things I’ve tried:

  1. Confirmed UAC is Disabled
  2. Confirmed RPC Services are Running
  3. Confirmed Registry Values for RPC and DCOM are correct

    Private Sub LoopTemp()
        Dim oDir As New DirectoryInfo(dPath)
        Dim oFileArr As FileInfo() = oDir.GetFiles()
        Dim oFile As FileInfo
        Dim oVar As Variable
        Dim oDoc = New Document()
    
        Dim oWord As Application
        oWord = CreateObject("Word.Application")
        oWord.Visible = False
    
        For Each oFile In oFileArr
           oDoc = oWord.Documents.Open(oFile.FullName)
    
           For Each oVar In oDoc.Variables
               MsgBox(oVar.Name)
           Next
    
           oDoc.Close(SaveChanges:=WdSaveOptions.wdSaveChanges)
    
        Next
        oWord.Quit()
    End Sub
    

Cindy Meister's user avatar

asked Jul 12, 2019 at 1:16

Sol_Kralj's user avatar

1

The RPC error appears when a «pointer» to a COM object is not correctly released from memory before code tries to re-use it. This is a common enough problem when automating Office applications from outside the application, itself. Especially when working from .NET great care must be used.

Another very important thing to note is that the New keyword should never be used with any Office object except Application. Although the APIs allow it, never use New Document with Word as this creates a Document object that can’t be correctly released.

For reasons of efficiency, starting the Word application once should be sufficient — it’s not necessary to repeat that within a loop, as long as the COM objects it uses are correctly released (set to Nothing and garbage collected).

I would write the code in the question as follows:

Private Sub LoopTemp()
    Dim oDir As New DirectoryInfo(dPath)
    Dim oFileArr As FileInfo() = oDir.GetFiles()
    Dim oFile As FileInfo
    Dim oVar As Variable = Nothing
    Dim oWord As Application = NOthing
    Dim oDoc As Document = Nothing

    oWord = New Word.Application
    oWord.Visible = False

    For Each oFile In oFileArr
        oDoc = oWord.Documents.Open(oFile.FullName)
        For Each oVar In oDoc.Variables
            MsgBox(oVar.Name)
        Next
        oVar = Nothing
        oDoc.Close(SaveChanges:=WdSaveOptions.wdSaveChanges)
        oDoc = Nothing

        GC.Collect()
        GC.WaitForPendingFinalizers()
        GC.Collect()
        GC.WaitForPendingFinalizers() 
    Next

    oWord.Quit()
    oWord = Nothing
    GC.Collect()
    GC.WaitForPendingFinalizers()
    GC.Collect()
    GC.WaitForPendingFinalizers()

End Sub

answered Jul 12, 2019 at 12:30

Cindy Meister's user avatar

Cindy MeisterCindy Meister

24.9k21 gold badges35 silver badges43 bronze badges

5

'Loop through .docx files replacing variables
Private Sub LoopTemp()
    Dim oDir As New DirectoryInfo(dPath)
    Dim oFileArr As FileInfo() = oDir.GetFiles()
    Dim oFile As FileInfo
    Dim oVar As Variable
    Dim oWord As Application

    For Each oFile In oFileArr

        oWord = CreateObject("Word.Application")
        oWord.Visible = False

        GC.Collect()
        GC.WaitForPendingFinalizers()

        Dim oDoc = New Document()
        oDoc = oWord.Documents.Open(oFile.FullName)

        For Each oVar In oDoc.Variables
            MsgBox(oVar.Name)
        Next

        oDoc.Close(SaveChanges:=WdSaveOptions.wdSaveChanges)
        Marshal.FinalReleaseComObject(oDoc)

        oWord.Quit()
        Marshal.FinalReleaseComObject(oWord)

    Next

End Sub

The updated code worked when I moved oWord into the loop. Now it creates a new object and quits for each document. I’m not sure if there’s a better way.

answered Jul 12, 2019 at 3:02

Sol_Kralj's user avatar

Sol_KraljSol_Kralj

1341 gold badge6 silver badges22 bronze badges

Сервер RPC недоступен — способы исправитьПри подключении к удаленному компьютеру или виртуальной машине, некоторым сетевым устройствам, а также при установке и работе прикладных программ, использующих клиент-серверную архитектуру (в том числе на единственном локальном компьютере) пользователь может получить сообщение об ошибке «Сервер RPC недоступен» (RPC server is unavailable).

В этой инструкции подробно о способах исправить ошибку «Сервер RPC недоступен» в Windows 11 и Windows 10 с фокусом прежде всего на домашнего пользователя, но многие решения универсальны и подойдут для других сценариев.

Службы RPC и связанные с ними службы

Сообщения об ошибке Сервер RPC недоступен

Первое что следует проверить при ошибке — работу и тип запуска служб, необходимых для правильной работы протокола удаленного вызова процедур RPC. Некоторые из представленного списка — необходимые, некоторые — опциональны, но в некоторых случаях также способны приводить к ошибке «Сервер RPC недоступен».

  1. Откройте «Службы Windows», для этого можно нажать клавиши Win+R на клавиатуре (или нажать правой кнопкой мыши по кнопке «Пуск» и выбрать пункт «Выполнить», ввести services.msc и нажать Enter. Открыть службы Windows
  2. Найдите службы из списка, который приведен ниже после 5-го пункта, убедитесь, что они выполняются, а тип запуска задан верно. Список служб RPC
  3. Если это не так, дважды нажмите мышью по такой службе, измените тип запуска службы и примените настройки. Автоматический запуск службы RPCss
  4. Если ошибка RPC возникает при подключении к удаленному компьютеру или виртуальной машине, убедитесь, что и на нем службы настроены правильно.
  5. После изменения параметров запуска служб, перезагрузите компьютер.

Список служб в формате: Название службы на русском языке (название на английском) — тип запуска по умолчанию:

  • Инструментарий управления Windows (Windows Management Instrumentation) — Автоматически
  • Локатор удаленного вызова процедур RPC (Remote Procedure Call RPC Locator) — Вручную, можно попробовать поставить «Автоматически».
  • Модуль запуска процессов DCOM-сервера (DCOM Server Process Launcher) — Автоматически
  • Служба времени Windows (Windows Time service) — Автоматически
  • Сопоставитель конечных точек RPC (RPC Endpoint Mapper) — Автоматически
  • Удаленный вызов процедур RPC (Remote Procedure Call RPC) — Автоматически

Если для отдельных служб тип запуска выставлен неверно, при этом изменить его в интерфейсе управления службами невозможно, можно использовать редактор реестра.

Для этого: запустите редактор реестра (Win+Rregedit) и перейдите к разделу реестра

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices

В этом разделе реестра измените значение параметра Start на 2 (дважды нажав по параметру и задав новое значение) в следующих подразделах:

  • DcomLaunch
  • RpcEptMapper
  • RpcLocator
  • RpcSs
  • W32Time
  • Winmgmt

Часть параметров могут не изменяться и в реестре, в этой ситуации может помочь изменение прав доступа к разделам реестра.

В справке на официальном сайте Майкрософт приводится ещё две службы, которые могут вызывать ошибку «Сервер RPC недоступен» при входе в Windows :

  • Модуль поддержки NetBIOS через TCP/IP (TCP/IP NetBIOS Helper)
  • Удаленный реестр (Remote registry)

Протокол IPv6 и общий доступ к файлам и принтерам

Отключенная поддержка IP версии 6 и «Общий доступ к файлами и принтерам для сетей Майкрософт» также могут приводить к сбоям доступа к серверу RPC. Проверьте, включены ли они и, если нет — включите:

  1. Нажмите клавиши Win+R на клавиатуре, введите ncpa.cpl и нажмите Enter.
  2. Нажмите правой кнопкой мыши по сетевому подключению и откройте его свойства. Открыть свойства подключения Windows
  3. Отметьте пункты «Общий доступ к файлами и принтерам для сетей Майкрософт» и «IP версии 6» и примените настройки. Включить IPv6 для RPC

Брандмауэр Windows

В части настроек брандмауэра Windows при ошибке доступа к серверу RPC, в зависимости от сценария проблемы возможны разные решения.

Первый вариант:

  1. В Панели управления (открыть её можно, используя поиск в панели задач) откройте пункт «Брандмауэр Защитника Windows»
  2. В панели слева нажмите «Разрешение взаимодействия с приложениями или компонентами брандмауэра Защитника Windows». Разрешение приложений в брандмауэре Windows
  3. Нажмите кнопку «Изменить параметры» и разрешите взаимодействие для «Удаленный помощник». Разрешение для удаленный помощник в брандмауэре

Если предыдущий метод не помог, попробуйте:

  • Открыть порт 135 на локальной и удаленной машине. Подробнее: Как открыть порты в Windows.
  • Полностью отключить брандмауэр Windows (возможно, временно, чтобы выяснить, является ли его работа причиной ошибки)

Дополнительные методы решения проблемы

Если предыдущие варианты не помогли, при этом вы уверены, что на сервере (при удаленном подключении к собственным ресурсам или серверам, которые использует ваше ПО) проблем нет, попробуйте следующие варианты решения проблемы:

  • Используйте команды в командной строке, запущенной от имени Администратора
    ipconfig /flushsdns
    ipconfig /renew
  • Если используется профиль сети «Общественная» (Общедоступная), попробуйте переключить её на «Частная» — Как изменить тип сети в Windows 11 и в Windows 10.
  • Если вам известен IP-адрес сервера, к которому выполняется подключение, проверьте, доступен ли порт 135 на нем с помощью команды PowerShell (заменив IP-адрес на нужный), при успехе в пункте TcpTestSucceeded должен быть статус «True»
    Test-NetConnection 192.168.1.1 -port 135

    Проверка подключения по порту 135

  • При наличии сторонних антивирусов или файрволлов, попробуйте отключить их, или отключить только функции защиты в сети.
  • При использовании VPN-сервисов, попробуйте отключить их.
  • Попробуйте отключить протокол teredo для IPv6 с помощью команды
    netsh interface teredo set state disabled

    Чтобы в дальнейшем включить его обратно используйте команду

    netsh interface teredo set state enabled
  • Учитывайте: если ошибка «Сервер RPC недоступен» возникает при запуске, установке или работе какого-либо прикладного ПО, полученного и модифицированного неофициальными методами, причина может быть в целенаправленной блокировке доступа к серверам лицензирования или иным.
  • Проверьте компьютер на наличие вирусов и вредоносных программ, блокировок доступа к сайтам в файле hosts.

Ошибка “
Сервер RPC недоступен
” (
The RPC server is unavailable
) появляется в Windows при ошибке коммуникации между двумя компьютерами по сети, когда компьютер (клиент RPC) не может подключиться к удаленному компьютеру (сервер RPC). В результате программа, которую вы запустили, не работает и возвращает ошибку, т.к. не можете получить данные с удаленного сервера. В этой статье мы разберем наиболее частые проблемы, которые могут препятствовать нормальному взаимодействию компьютеров через сеть по протоколу RPC.

ошибка Сервер RPC недоступен в Windows

Протокол RPC (Remote Process Call, удаленный вызов процедур) – это распространённый протокол взаимодействия приложений в локальной сети. В основном он используется для обмена данными с удалённым компьютерам, но есть некоторые программы, которые используют RPC для локальных взаимодействий между приложением и запущенной локально службой.

В типовом сеансе клиент RPC подключается к службе RPC Endpoint Mapper (сопоставления конечных точек) на RPC сервере по TCP порту 135 и запрашивает номер порта, на котором запущено нужное ему RPC приложение (служба). Служба RPC Endpoint Mapper возвращает клиенту номер динамического RPC порта, назначенного указанной службе при запуске. Затем RPC клиент взаимодействует с RPC службой по указанному TCP порту.

Если RPC клиент не смог подключиться к RPC серверу, в приложении появится ошибка:

The RPC server is unavailable

В современных версиях Windows (начиная с Windows Vista/2008) используется следующий диапазон динамических RPC портов (Dynamic RPC Port range): 49152 — 65535 (в Windows Server 2003 / XP и ниже использовался другой диапазон 1024 – 65535.

Наиболее распространённые проблемы, из-за которых не работает RPC взаимодействие между компьютерами:

  1. Удаленный компьютер выключен;
  2. Не запущены службы RPC на сервере;
  3. Вы пытаетесь подключиться к RPC серверу по неправильному имени (или как вариант, DNS имени сервера соответствует неверный IP адрес);
  4. Используются некорректные настройки сетевого подключение на клиенте или сервере;
  5. RPC трафик между клиентом и сервером блокируется файерволом;

Проверка доступности удаленного компьютера

Убедитесь, что удаленный компьютер включен, отвечает на ping по имени и IP адресу. Если RPC сервер не доступен по имени, проверьте корректность DNS записей и попробуйте сбросить DNS кэш на клиенте:
ipconfig /flushdns
.

Если имя компьютера, на котором запущен RPC-сервер недавно изменилось, попробуйте перерегистрировать его в DNS Active Directory:
ipconfig /registerdns

Проверка служб RPC

Проверьте, что на сервере запущены службы, которые необходимы для обработки входящих RPC подключений:

  1. Откройте консоль управления службами (services.msc);
  2. Убедитесь, что следующие службы запущены (статус Running), а тип их запуска – автоматический: Remote Procedure Call (RPC), RPC Endpoint Mapper и DCOM Server Process Launcher;проверить, что службы RCP запущены в Windows

Если RPC службы отключены и не запускаются, попробуйте активировать их через реестр. Найдите ветки этих служб в реестре и измените значение параметра Start на 2 (автоматический запуск службы):

  • Удаленный вызов процедур (RPC) — ветка реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRpcSs
  • Сопоставитель конечных точек RPC — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRpcEptMapper
  • Модуль запуска процессов DCOM-сервера — HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesDcomLaunch

включить службы RpcSs в реестре

RPC блокируется файерволом (брандмауэром)

Убедитесь, что RPC трафик между компьютерами не блокируется файеволом. Если у вас используется Windows Defender Firewall with Advanced Security, нужно проверить или создать правила, разрешающие RPC трафик. Одно правило, разрешающее доступ к службе RPC Endpoint Mapper по порту TCP/135; второе должно разрешать доступ к RPC службе, которая вам нужна по динамическим RPC портам (RPC Dynamic Ports). Правила нужно создать для всех трех сетевых профилей: Domain, Private и Public.

Проверьте с клиента, что на RPC сервере доступен 135 порт TCP (должен слушаться службой RPC Endpoint Mapper). Можно проверить доступность порта из PowerShell:

Test-NetConnection 192.168.1.201 -port 135

Test-NetConnection powershell проверка TCP порт 135 службы RPC Endpoint Mapper

Если RPC порт доступен, должен появится ответ
TcpTestSucceeded:True
.

Вы можете получить список конечных точек RPC (сервисов и приложений), которые зарегистрированы на удаленном компьютере и анонсируются службой RPC Endpoint Mapper с помощью утилиту PortQry

portqry -n 192.168.1.201 -p tcp -e 135

В выводе PortQry можно найти номер порта, назначенный нужной вам службе RPC (она запущена?) и проверить, что этот порт не блокируется с клиента.

Если у вас используется сторонний файервол/антивирус, убедитесь, что он не блокирует RPC трафик и умеет корректно обрабатывать трафик динамических RPC портов.

Проверка сетевых протоколов и настроек

Убедитесь, что на вашем компьютере заданы корректные сетевые настройки: IP адрес, шлюз, маска сети, настройки DNS серверов (можно проверить настройки сети из PowerShell). Проверьте, что в настройках сетевого адаптера, используемого для подключения включены протоколы Internet Protocol Version 6 (TCP/IPv6) и File and Printer Sharing for Microsoft Networks

включить протокол ipv6 и протокол общего доступа в windows 10

Некоторые сетевые приложения некорректно работают при отключенном протоколе TCP/IPv6, возвращая ошибку:
1722 The RPC server is unavailable
. Если после включения ipv6 ошибка RPC сохраняется, попробуйте отключить протокол Teredo через реестр:

Создайте в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters параметр типа DWORD с именем DisabledComponents и значением 8:

reg add hklmsystemcurrentcontrolsetservicestcpip6parameters /v DisabledComponents /t REG_DWORD /d 8

В некоторых случаях приходится получаить дамп трафика на RPC сервера и анализирвать его с помощью Microsoft Network Monitor 3.4 или Message Analyzer.

Всем привет! В общем, сегодня столкнулся с проблемой – при попытке подключения к удаленному компьютеру произошла следующая системная ошибка:

Сервер RPC недоступен.

Бился я с ней где-то часа два, и все же мне удалось её решить. Я на всякий пожарный описал все возможные способы, которые мне попадались в интернете. Постарался описать подробно, но сжато, чтобы не тратить ваше время. Если что-то будет не получаться – пишите в комментариях, постараюсь вам помочь.

Содержание

  1. Способ 1: Запуск служб
  2. Способ 2: Целостность системных файлов
  3. Способ 3: Выключение антивируса или брандмауэра
  4. Способ 4: Комплексные меры
  5. Задать вопрос автору статьи

Способ 1: Запуск служб

Сервер RPC недоступен в Windows 10 и Windows 11

Чаще всего ошибка «Сервер RPC недоступен» как в Windows 10, так и в Windows 11 возникает из-за того, что зависла одна из служб, работающая с RPC. Подобное бывает при общем сбое операционной системы или при неправильной работе какой-то программы. Давайте попробуем это исправить.

  1. Одновременно на клавиатуре зажмите две клавиши:

+ R

  1. Введите команду:

services.msc

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. Теперь найдите службу «Локатор удаленного вызова процедур (RPC)». Чтобы открыть службу, два раза быстро нажмите левой кнопкой мыши. Или через правую кнопку и контекстное меню перейдите в «Свойства».

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. В первую очередь обратите внимание на «Состояние» – служба не должна быть активной. Если вы видите, что она запущена – остановите её с помощью кнопки. После этого еще проверьте «Тип запуска» – чтобы стоял параметр «Вручную». Примените настройки и закройте окошко.

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. Вторую службу, которую нужно проверить – это служба «Удаленного вызова процедур (RPC).

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. Данная служба наоборот должна быть запущена (смотрим в «Состояние») – если она по каким-то причинам остановлена, запустите её. Также установите автоматический тип запуска. Не забудьте применить настройки, если вы их меняли.

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. Все то же самое делаем для служб:

Сервер

Средство построения конечных точек Windows Audio

Удаленный реестр

Питание

  1. Все они должны быть запущены. Ну и не забудьте проверить тип запуска – служба должна автоматически запускаться вместе с запуском операционной системы.

ПРИМЕЧАНИЕ! Если в коде ошибки вы видите конкретный номер 1722 – это значит вам нужно дополнительно проверить еще две службы «Модель запуска процессов DCOM-сервера» и «Диспетчер печати».

После перечисленных проверок попробуйте заново проделать те действия, которые до этого вызывали ошибку. Если ошибка пропадет – хорошо. Если она останется – попробуйте перезагрузить комп. После запуска ОС все службы должны запуститься нормально.

Способ 2: Целостность системных файлов

Для нормальной работы всех служб и встроенных системных программ, которые работают с RPC, нужно, чтобы все файлы системы были исправны. Из-за вирусов, сторонних программ, а также из-за поломки секторов жесткого диска системные файлы могут ломаться. Нам нужно проверить целостность системных файлов и восстановить их.

Запускаем командную строку с правами администратора. Прежде чем мы запустим проверку, хочу вас предупредить, что в некоторых ситуациях процедура может длиться долго. Windows автоматически должна проверить файлы и в случае обнаружения поломок восстановить их. Используем две команды:

DISM.exe /Online /Cleanup-image /Restorehealth
sfc /scannow

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

Способ 3: Выключение антивируса или брандмауэра

Возможно проблема с удаленным подключением связана с блокировкой вашего антивируса. Попробуйте его выключить. Для этого в правом нижнем углу экрана в трее нажмите правой кнопкой по значку вашего антивируса – далее поищите в каждом из пунктов команду отключения защиты и деактивируйте её на какое-то время. После этого проверьте, чтобы ошибка не возникала.

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

Если у вас нет стороннего антивируса – его роль исполняет встроенный Windows Defender. Давайте попробуем выключить защиту для той сети, к которой вы подключены.

  1. Откройте «Пуск» – «Параметры».

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. Найдите раздел «Обновление и безопасность».

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. Перейдите в подраздел «Безопасность Windows» и слева из списка выберите пункт «Брандмауэр и защита сети».

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. Выберите ту сеть, к которой вы подключены – она обозначена надписью «активный».

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

  1. Выключите «Брандмауэр Microsoft Defender».

Сервер RPC недоступен в Windows 10 и 11: как решить проблему?

Если проблема не решилась, включите параметр обратно и переходите к следующей главе. Если проблема решилась, дальше нужно думать, как обратно включить защиту для сети. Можно попробовать установить сторонний антивирус, чтобы он взял роль «защитника» на себя. Вы также можете в «Пуск» – «Параметры» – «Обновление и безопасность» – в разделе «Обновления» установите все пакеты, которые предлагает система. Возможно, есть какой-то баг, который мешает работе защитника и сети. Этот баг может исправиться после обновления. Также обязательно проверьте комп антивирусной программой. Можете для этого использовать встроенный Defender.

Способ 4: Комплексные меры

Итак, у нас есть ошибка сервера RPC, который по каким-то причинам не доступен в Windows (10, 11, 7 или 8). Я опишу ряд советов, которые должны помочь при удаленном подключении и решении данной ошибки.

  • Если вы используете какие-то VPN или Proxy – выключите эти программы и подключения.
  • Полностью проверьте компьютер и систему на наличие вирусов.
  • Уберите все из автозагрузки, кроме драйвера звуковой карты и антивируса. После этого перезагрузите компьютер и проверьте подключение.
  • Выполните комплексную чистку компьютера от всего лишнего.
  • Обновите драйвера на материнскую плату. Если вы используете стороннюю сетевую карту или Wi-Fi адаптер, обновите драйвера и для них. Дрова скачиваем исключительно вручную с официального сайта. Про то, как это сделать – подробно написано в этой статье (ссылка).
  • Если вы пытаетесь получить доступ к какому-то устройству в своей локальной сети – почитайте рекомендации отсюда.
  • Обновите прошивку вашего роутера, если вы используете его для подключения.
  • Установите все обновления для вашей системы, если вы этого еще не сделали.

На этом все, дорогие друзья. Вы можете обращаться за помощью ко мне в комментариях. Я или кто-то из других специалистов портала WiFiGiD.RU вам ответит и постарается помочь. Старайтесь писать, как можно подробнее о своей проблеме, а также о том, что вы уже сделали из статьи выше. Всем добра и берегите себя.

RPC – это способ обмена информацией между процессами или между клиентом (устройством, инициирующем связь RPC) и сервером (устройством, которое с ним связывается) в сети или системе. Многие встроенные компоненты Windows используют RPC, который в качестве отправной точки для связи между системами применяет различные порты. При возникновении неполадок возникает сообщение «Сервер RPC недоступен».

Способы устранения ошибки «Сервер RPC недоступен»

Решение ошибки «Сервер RPC недоступен».

Причины появления ошибки

В типичном сеансе RPC клиент связывается с программой сопоставления конечных точек сервера по TCP-порту 135 и для указанной службы требует определённого номера динамического порта. Сервер отвечает, отправив IP-адрес и номер порта, для которого служба зарегистрирована в RPC после её запуска, а затем связывается с клиентом с указанным IP-адресом и номером порта. Возможные причины ошибки «Сервер RPC недоступен» следующие:

  1. Остановка службы RPC – когда служба RPC на сервере не запущена.
  2. Проблемы с разрешением имён – имя сервера RPC может быть связано с неправильным IP-адресом. Это значит, что клиент связывается с неправильным сервером или пытается связаться с IP-адресом, который в настоящее время не используется. Возможно, имя сервера не распознаётся вообще.
  3. Трафик заблокирован брандмауэром – брандмауэр или другое приложение безопасности на сервере или брандмауэр устройства между клиентом и сервером могут препятствовать доступу трафика к TCP-порту сервера 135.
  4. Проблемы с подключением – проблема с сетью может быть причиной отсутствия соединения между клиентом и сервером.

Ошибка «Сервер RPC недоступен»

Способы решения

При запуске или установке некоторых программ вы можете получить сообщение «Сервер RPC недоступен». Это часто связано с синхронизацией времени, необходимой для запуска программы. Без этого некоторые приложения могут работать неправильно или не запускаться вообще. Что делать, чтобы сообщение больше не появлялось, рассмотрим далее.

Код ошибки 1722

Ошибка 1722 «Сервер PRC недоступен» может возникать при использовании сетевого принтера или звуковых устройств в седьмой версии Windows. Причиной может быть антивирусная программа, блокирующая коммуникационные порты – для её устранения нужно найти параметры управления доверенными программами в настройках антивируса.

Ошибка 1722 «Сервер PRC недоступен»

Также ошибка может возникнуть из-за того, что в системе присутствует сам вирус – стоит проверить систему и диск с помощью другой антивирусной программы, чем в настоящее время. Для устранения нажмите Пуск/Настройки/Панель управления. Затем откройте Администрирование/Службы. Появится окно, в котором с правой стороны вы найдете «Сервер». На «Сервере» проверьте, включён ли автоматический тип запуска. Измените параметр при необходимости и перезагрузите компьютер.

Устранение ошибка 1722

Отключение брандмауэра Windows

Если при печати в Windows 7 появляется ошибка «Сервер RPC недоступен», проблема может крыться в брандмауэре. Он отвечает за блокировку доступа к компьютеру во внутренней или внешней сети посторонними лицами или приложениями, что исключает возможность контроля ПК. Ниже приведены некоторые советы, которые позволят вам отключить (в случае, если вы хотите использовать для этого другое приложение) и включить интегрированный брандмауэр Windows. Измените имя компьютера с помощью «Настроек»:

  1. Это один из самых простых способов отключения сетевого брандмауэра. Для этого используйте вкладку «Параметры системы».
  2. Из списка доступных опций выберите «Сеть и Интернет».
  3. Перейдите на вкладку Ethernet и выберите «Брандмауэр Windows» с правой стороны окна.
  4. Выберите включение и отключение брандмауэра.
  5. В списке доступных операций выберите параметр «Отключить брандмауэр Windows» (не рекомендуется).
  6. Нажмите «ОК». Брандмауэр выключен.

Отключить брандмауэр Windows

Следующий способ – редактор локальной групповой политики (GPO):

  1. Нажмите клавиши Win + R и введите «gpedit.msc». Откроется редактор локальной групповой политики.
  2. Параметр, ответственный за отключение брандмауэра, расположен по адресу

«Конфигурация компьютера» – «Административные шаблоны» – «Сеть» – «Сетевые подключения» – «Стандартный профиль» – «Брандмауэр Windows: защита всех сетевых подключений».

  1. Измените состояние настройки на «ВЫКЛ».
  2. После нажатия кнопки «ОК» или «Применить» брандмауэр Windows перестанет работать.

Вызов редактора локальной групповой политики

Для более опытных пользователей вышеупомянутый сценарий можно выполнить с помощью редактора реестра.

  • нажмите пуск и введите «regedit», запустите приложение от имени администратора;
  • в окне редактора найдите каталог

HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyDomainProfile;

  • найдите параметр EnableFirewall и измените его значение с 1 на 0;
  • таким же образом отредактируйте ключ EnableFirewall в следующем каталоге

HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyPublicProfile;

  • и последний каталог с ключом EnableFirewall

HKLMSYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicyStandardProfile.

Закройте редактор реестра и перезагрузите компьютер. С этого момента брандмауэр Windows отключается. Чтобы снова возобновить брандмауэр с помощью редактора реестра, просто измените указанные выше значения с названием EnableFirewall с 0 на 1, и перезапустите компьютер.

Ручной запуск задачи services.msc

При запуске или установке некоторых программ вы можете получить сообщение «Сервер RPC недоступен». Это часто связано с синхронизацией времени, необходимой для запуска программы. Без этого некоторые приложения могут работать неправильно или не запускаться вообще. При недоступности функции может произойти сбой, для исправления необходимо включить службу синхронизации:

  • сначала нажмите меню «Пуск» и в строке поиска введите «Выполнить», нажмите «Enter»;
  • в следующем окне введите services.msc и подтвердите кнопкой «OK»;
  • найдите в списке элемент «Служба времени Windows»;
  • дважды щёлкните эту службу. Откроется меню, в котором вы должны нажать кнопку «Выполнить».

Служба времени Windows

С этого момента сообщение «RPC-сервер недоступен» появляться не должно.

Устранение неполадок Windows

Исправить ошибку в Windows 10 поможет встроенное средство устранения неполадок системы. Перезагрузите компьютер и после подачи звукового сигнала нажимайте кнопку F8 раз в секунду, пока не откроется меню выбора вариантов загрузки. Первым из них будет «Устранение неполадок компьютера». Выберите это действие и дождитесь окончания операции.

Ошибка в FineReader

Проблема может возникать в Windows 8 и выше и при попытке запуска службы ABBYY FineReader Licensing Service. Для проверки состояния в списке служб (как его найти, описано выше) выберите ABBYY FineReader Licensing Service. В окне свойств убедитесь, что параметр «Тип запуска» установлен на «Автоматический». При необходимости измените его, закройте редактор кнопкой «ОК» и перезагрузите компьютер.

ABBYY FineReader Licensing Service

Проверка на вирусы

В Windows XP и выше сообщение о неисправности может быть вызвано наличием вируса. Просканируйте свой ПК с помощью антивирусной программы, следуя указаниям мастера. В Windows 10 можно воспользоваться стандартным «Защитником». Для этого нажмите правой кнопкой мыши на значок «Щит» возле часов и выберите «Открыть». Запустите проверку на вирусы нажатием соответствующей кнопки в окне.

Защитник Windows 10

Как видите, избавиться от ошибки можно многими способами. В этом списке представлены наиболее вероятные варианты исправления ошибки. При необходимости придётся переустановить операционную систему, воспользовавшись установочным диском.

Using Microsoft Windows Server 2008 Training Kit for Exam 70-640: Configuring WS2008 Active Directory.

Installed WS008 R2 and installed all updates on two Dell PowerEdge TII servers.  Connected to a stand alone Cisco 2960 switch.  Also connected a W7 laptop.  Made one WS2008 R2 PDC.  joined the second WS2008 R2 and the laptop to the domain. 
They both show in Active Directory Users and Computers in the Computers OU.  Book says when I right click on either, I should see a drop down menu that has the choice of Manage.

For the laptop I get «the network path was not found» even though it shows, like I said, in the ADUAC.  I can also can ping it by name from the WS2008 command window using «ping di002.contoso.com».

For the WS2008 R2, I get «The RPC server is unavailable».

I did this already: ran these commands —

auditpol.exe /set /SubCategory:»MPSSVC rule-level Policy Change»,»Filtering Platform policy change»,»IPsec Main Mode»,»IPsec Quick Mode»,»IPsec
Extended Mode»,»IPsec Driver»,»Other System Events»,»Filtering Platform Packet Drop»,»Filtering Platform Connection» /success:enable /failure:enable

and then stopped, then restarted the firewall, first just on the PDC, then the second WS2008 R2.  Even restarted both devices.

Finally, I made automatic and started all the services on both WS200 R2 computers all the Remote services. Same error.

Have googled and googled and read and re-read the training kit.  No success.

I have exported the Inbound and Outbound rules into an Excel file.

If you can help, I’d sure appreciate it much.

David JR

dadamsjr at the live dot com

На компьютерах достаточно часто возникают разного рода ошибки. Проблема, связанная с недоступностью RPC сервера не исключение. В основном она появляется при обновлении драйверов, но бывают случаи, когда ошибки «сервер RPC недоступен» возникает и при запуске операционной системы (ОС) Windows 7, 8, 10, а также XP или Server 2003, 2008, 2012. Также ошибка может возникать при печати или установке принтера.

RPC — это просто метод для передачи информации между различными процессами или клиентом (техника, что начинает связь) и сервером (устройством, которое пытается связаться с клиентом) в рамках системы или сети. Очень много компонентов ОС Виндовс использует этот способ “общения”. RPC в качестве точек связи использует разные порты чтобы связывать системы между собой.

В случае нарушения работы сервера, когда он недоступен, обмен пакетов данных между системами нарушается, теряется связь с удаленным объектом и функции просто перестают ее выполнять. Поэтому и возникает ошибка.Принцип работы

Что за ошибка и почему возникает

Проблема появляется, когда связь между системами нарушается, так как сервер не может отправить адрес порта точке связи. Появиться она может по следующим причинам:

  1. Работа службы PRC была приостановлена или вовсе не запущена.
  2. Наименование сервера может быт по ошибке связано с не тем адресом. Получается, что клиент пытается связаться с не тем “собеседником”. Также бывает, что связь пытаются наладить через порт, который не используется или имя сервера просто не распознается системой.
  3. Трафик был заблокирован брандмауэром или другим приложением для обеспечения безопасности.
  4. Есть проблемы с сетью, которые мешают связи между клиентом и сервером.
  5. Недавно были установлены драйвера на принтер, МФУ, звуковую карту и т.д.Вид ошибки

Поиск причины

Причину, которая вызвала ошибку легко выявить по ее коду. Ее возможно посмотреть в журнале событий, только делать это рекомендуется сразу после обнаружения проблемы:

  1. Открыть меню “Пуск”.
  2. Перейти в панель управления.
  3. Зайти на вкладку администрирования и открыть окно просмотра событий.Вкладка Администрирование
  4. Поискать в журнале сообщение об ошибке (обычно помечено красным крестом). Как правило, если сделать все действия сразу после первого появления ошибки, то она будет в первой строке. В ней будет находится расшифровка и устройство, которое вызывает неполадки.
  5. Найти описание проблемы в интернете, а также способы решения.

Общие способы решения

Есть универсальные способы, которые помогают быстро устранить проблему с сервером РПЦ. На их выполнения потребуется немного времени, но результат не заставит ждать.

Перезапуск службы RPC

Для начала рекомендуется просто перезапустить службу. Возможно, что неполадки в работе при этом будут устранены. Сделать это можно следующим образом:

  1. Открыть диспетчер задач.
  2. Перейти на вкладку “Службы”.Вкладка Службы
  3. Найти необходимое. Для удобства рекомендуется выстроить элементы по алфавиту, что можно сделать одним кликом на столбик “Имена”.
  4. Кликнуть правой кнопкой мышки по службе и выбрать пункт “Перезапустить”.

После этого процесс прекратит работу и тут же запустится.

Отключение брандмауэра

Этот защитник может попросту не пропускать важные пакеты данных. Именно поэтому рекомендуется отключить его на время, чтобы точно удостовериться, что это не его вина.Отключение брандмауэра

Сделать это можно через панель управления, в разделе системы и безопасности.

Проверка времени компьютера

Если ошибка появилась в момент запуска какой-то программы или ее остановки, то вероятно все связанно с синхронизацией времени. Решить эту проблемы можно таким образом:

  1. Зайти в диспетчер задач. Перейти в последнюю вкладку. Внизу окна будет ссылка “Открыть Службы”.
  2. Откроется окно, в котором требуется найти службу времени.Служба времени
  3. Если она была приостановлена, то ее требуется запустить. При активной службе рекомендуется выполнить перезапуск.

Устранение неполадок системы

В случае, если ошибка «сервер РПЦ недоступен» появилась при запуске ОС, необходимо сделать следующее:

  1. Перезагрузить компьютер.
  2. Нажать кнопку F8 при загрузке.
  3. Выбрать пункт «Устранение неполадок компьютера».Устранение неполадок
  4. Дождаться окончания процесса.

Проверка на вирусы

Также можно просканировать систему на наличие вредоносного программного обеспечения (ПО). Также, если антивирус обнаружит что-то, то его рекомендуется заменить. Дело в том, что если программа не обнаружила вирус самостоятельно, а только после ручного запуска сканирования, то значит, что она не выполняет своих функций.Проверка антивирусом

При обнаружении вируса, его необходимо удалить.

Ошибка с кодом 1722

Ошибка «Сервер RPC недоступен» наиболее часто встречается при проблемах с отсутствием звука. Решается следующим образом:

  1. Открыть диспетчер задач.
  2. Перейти на вкладку “Службы”.
  3. Внизу окна будет ссылка, кликнуть на нее для открытия всех служб.открыть все службы
  4. Найти «Средство построения точек аудио».Построение точек аудио
  5. Сделать тип запуска “Вручную” и сохранить изменения.Изменяем тип запуска

Ошибка в FineReader

Многие пользователи используют FineReader для поиска и распознавания текста на картинках. Она может вызывать проблемы, а устранить их можно следующим образом:

  1. Зайти в “Службы” через диспетчер задач или панель управления.
  2. Оставить службу FineReader.остановка служб
  3. Перезагрузить компьютер и запустить приостановленный процесс.

Проблемы с Bitlocker

Битлокер защищает информацию на носителях информации, например, флешках. И иногда работа этой технологии может вызывать ошибки с сервером RPC. Исправить это можно отключением технологии или просто обновлением. Это можно сделать через центр обновлений Виндовс или скачав необходимые файлы с интернета.

Понравилась статья? Поделить с друзьями:
  • The roots of the word like
  • The spoken word the message
  • The root word of questions
  • The spoken word signs
  • The root word of light