Задать вопрос
  • Как ввести результат поиска cmd в переменную?

    @res2001
    Developer, ex-admin
    Правильная команда: dir /s steam.exe
    Примерно так будет:
    for "tokens=* delims=" %%a in ('dir /s  steam.exe') do (
      move "%%~a" "путь куда перемещаем файл"
    )
    Ответ написан
    2 комментария
  • Зачем Visual Studio нужен свой runtime?

    @res2001
    Developer, ex-admin
    std::string - это то же часть микрософтовского рантайма (стандартной библиотеки), если вы собираете проект в MSVS.
    Нет никаких стандартных реализаций компилятора и libstd++, есть стандарт, где описано какой должна быть реализация. А реализаций много.
    Ответ написан
  • Роутер через время сбрасывается до заводских настроек. Как исправить?

    @res2001
    Developer, ex-admin
    Может быть нельзя прошить версию 1 сразу на 3, нужно через промежуточную 2.
    Попробуйте найти версию 2 прошивки и прошить сначала ею, а потом 2 проапгрейдить на 3.
    Еще можно поискать подходящую неофициальную прошивку, может быть такие есть для вашего роутера.
    Ответ написан
    Комментировать
  • Как сделать доступным сервис из lan и из wan по имени?

    @res2001
    Developer, ex-admin
    Добавьте на внутренний ДНС запись о сервере.
    Адреса сервера для внешнего и внутреннего ДНСа могут быть разные.
    Ответ написан
    Комментировать
  • Нет доступа к внутренней подсети как настроить машрут?

    @res2001
    Developer, ex-admin
    Встречные вопросы:
    1. На сколько понял ВПН поднимается и, например, пинги идут с ВПН IP сервера на ВПН IP клиента и наоборот?
    2. Значит проблема в доступе из сети клиента в сеть сервера и наоборот?
    3. Т.к. ВПН сервер и клиент подняты на роутерах, то предполагаю, что эти же роутеры являются шлюзами по умолчанию для компов в своих сетях?

    Если на все вопросы ответ - Да.
    То проблема в блокировке трафика фаерволами. Блокировка может происходить как на роутерах так и на конечных узлах локальными фаерами.
    Проблемы с маршрутизацией быть не должно, т.к. роутеры - шлюзы по умолчанию в своих сетях.
    Выберите по компу в обеих сетях, убедитесь, что на этих тестовых компах роутеры являются шлюзами по умолчанию, отключите на них локальные фаерволы и тестируйте. Предварительно убедитесь, что на роутерах фаервол не блокирует ВПН трафик. Так же было бы полезно во время теста смотреть на роутерах вывод tcpdump по ВПН интерфейсу.
    Ответ написан
  • Как запускать exe автоматически при попадании на ПК?

    @res2001
    Developer, ex-admin
    В такой постановке вопроса ответ - никак.

    Что бы любая программа запустилась, либо ОС должна знать, что ее надо запустить в какой-то момент, либо пользователь должен ее запустить руками.
    Для автозапуска можно использовать несоколько веток реестра, как пользовательских так и системных, так же можно использовать каталог sturtup в меню пуск (в вин10 его нет в явном виде в меню, но его можно найти в файловой системе) или же добавить Параметры->Приложения->Автозагрузка (это действие, по идее, добавляет записи вреестр).
    Еще вариант - добавить старт приложения в шедулер, повесив его на какой-либо подходящий триггер.
    После внесения соответствующих изменений и перезагрузки (или наступления триггерного события) приложение запустится.

    Так же можно запустить приложение удаленно, таких вариантов довольно много. Из встроенных средств можно использовать: wmic или powershell. Тот же psexec (о котором писал pavelsha ) и т.п. Но программа должна быть доступна на удаленном компьютере, по указываемому пути. Т.е. вы должны сначала скопировать программу на удаленный комп, а потом уже удаленно ее запускать. Как вариант - указывать сетевой путь, доступный удаленному компьютеру. Но нужно не забывать, что в случае сетевого пути, потребуется авторизация на сетевом ресурсе ... Проще скопировать локально.

    Кстати, редактировать реестр можно и удаленно. Для этого есть средства из коробки. Например команда reg add - умеет это делать. Но и тут есть своя специфика.
    Ответ написан
    Комментировать
  • Почему на линукс не работает библиотека conio.h?

    @res2001
    Developer, ex-admin
    conio.h - это чисто виндовый заголовочный файл, в линукс его нет и к стандартной библиотеке С/С++ он отношения не имеет.
    Для вашего примера он не нужен - просто уберите строку и откомпилируйте.
    Ответ написан
    Комментировать
  • Как организовать перезапуск сервиса при падении?

    @res2001
    Developer, ex-admin
    По идее если сервис падает, то он освобождает порт.

    Это только по вашей идее.
    На самом деле порт может быть еще какое-то время занят пока не придет пакет с установленным флагом FIN или не закончится тайм-аут ожидания такого пакета. Так работает протокол TCP.
    Обычно, что бы избежать ожидания закрытия порта, порт открывают с указанием флага SO_REUSEADDR.
    Возможно программа падает потому, что происходит обрыв соединения. Возможно у вас не корректно обрабатывается эта ситуация (если вообще обрабатывается).
    На счет рестарта - возможно стоит оформить ваш сервис как виндовую службу, тогда за рестарт будет отвечать виндовый Service Manager. И не понадобится костыль в виде батника.
    Ответ написан
    Комментировать
  • Как преодолевается потеря мотивации в ИТ?

    @res2001
    Developer, ex-admin
    Отдых, спорт, общение. В общем все стандартно - переключайтесь на другие занятия, которые приносят положительные эмоции. Со временем выгорание проходит и снова хочется куда-нибудь углубиться :-)
    Ответ написан
    Комментировать
  • Как вылечить диск?

    @res2001
    Developer, ex-admin
    Если на диске важные данные, то я бы сделал образ диска, а потом бы производил потенциально деструктивные операции.

    В первом случае можно ввести в ответ No, тогда он что-то попробует сделать.
    Можно попытаться восстановить раздел с загрузочного носителя, используя софт для восстановления разделов.
    Для начала стоит провести тест диска, т.к. суперблоки и таблицы разделов обычно просто так не сбоят. Вероятно диск начал сыпаться.
    Ответ написан
    3 комментария
  • Общие вопросы по работе Интернета и сетей?

    @res2001
    Developer, ex-admin
    1. Вещи это разные, но взаимосвязанные. Домен сайта - это просто запись в DNSе и веб сервер настроенный на это имя. Домен AD - это целый комплекс решений, в которые в т.ч. входит и DNS и может быть веб сервер.
    Но сайты обычно используются внешними по отношению к организации пользователями, а домен предприятия - внутренними. Поэтому лучше их разделять и вообще делать так, чтоб инфраструктура обслуживающая обе сущности не пересекалась друг с другом. Делать это полезно в т.ч. и с точки зрения безопасности сети. При этом имя внутреннего и внешнего домена вполне может быть одно и то же, но это не обязательно.
    2. Маска нужна для того, что бы tcp/ip мог понять отправляется ли пакет в другую сеть, не доступную на прямую, или же он уходит соседу по своей сети. Если пакет отправляется в другую сеть, то включается маршрутизация, обычно это заключается в том, что реально пакет уходит на шлюз по умолчанию, а там уже разруливается по нужным направлениям. Делается это так:
    if ((remoteIP & mask) != (selfIP & mask)) {
      пакет предназначен для другой сети, идем на маршрутизацию
    } else {
      пакет для своей сети - можно отправлять сразу
    }

    Где:
    remoteIP - IP назначения,
    selfIP - свой IP,
    mask - маска своей сети.
    Используется операция побитового И.
    Для совершения подобной проверки маска и IP адреса преобразуются в 4-ёх байтовое беззнаковое целое (просто 4 октета IP адреса "склеиваются" вместе в двоичном представлении и составляют это 4-ёх байтовое целое) и уже над этими числами производятся операции.
    Из подобного применения маски видно, что она не обязательно должна быть 255 или 0. Возможны любые значения, которые может принимать 4 байтовое беззнаковое целое, где старшие биты единицы, а младшие нули. Например допустимы значения: 0, 128, 192, 224, 240, 248, 252, 254, 255 (тут я указываю значения для одного октета в маске). Чтоб было понятнее переведите все эти числа в двоичную систему.
    3. Классовой адресации уже в реальности нет (это "уже" длится уже долго, я не успел застать классовую адресацию :)). Про нее еще пишут в книгах, но в жизни ее нет. Везде где вы встретите маску в настройках IP - классовой адресации нет.
    В принципе, все задачи по разделению сетей и определению масок можно решить основываясь на том, как используется маска сети (см.п.2).
    4. Для виндовых машин фактический стандарт управления доменом - AD. По понятным причинам - предоставляется производителем винды.
    Но есть и аналоги. Из платных у Novell есть соответствующий продукт, которые то же умеет в виндовые GPO и т.п.
    Жаль, что сама Novell уже не существует и похоже "пошла по рукам", но ее продукты используются до сих пор. Некоторые продукты Novell опережали конкурентов на года.
    В основе AD лежит служба каталогов (посмотрите определение в вики). Есть открытый стандарт для подобных служб - LDAP. Есть открытые и проприетарные решения, реализующие службу каталогов. Как служба каталогов AD не единственная и далеко не лучшая. Кстати, на сколько я знаю, именно в Novell была разработана первая служба каталогов, когда еще AD даже в проекте не было.
    Но AD это не только служба каталогов, это еще и механизмы управления раб.станциями, пользователями и т.д. и т.п. И вот это все в совокупности делает AD не заменимой вещью для управления виндовой сетью.
    Ответ написан
    Комментировать
  • Как использовать RDP по одному адресу и в локалке и по интернету?

    @res2001
    Developer, ex-admin
    Настройте разные DNSы для внутренних пользователей и для внешних. И используйте имена для подключений.
    Ответ написан
    Комментировать
  • Как сделать чтобы Windows могла проверить подлинность самоподписанного сертификата?

    @res2001
    Developer, ex-admin
    Попробуйте добавить сертификат в Personal, Trusted People или Trusted Device
    А вообще - не используйте самоподписанный сертификат.
    Поднимите свой ЦС. Сгенерируйте сертификат ЦА, и сертификат сервера, который будет подписан сертификатом ЦА. На клиентах устанавливаете в корневые доверенные центры сертификации сертификат ЦА и будет вам счастье.
    Можно использовать встроенный в Windows Server Центр сертификации, или использовать openssl.

    Другой вариант - ослабить проверку сертификата у клиента. Думаю как-то это должно делаться в винде, возможно через реестр или GPO. Но я бы не стал этого делать.
    Ответ написан
    Комментировать
  • Как подсчитать необходимый размер буфера для monotonic_buffer_resource?

    @res2001
    Developer, ex-admin
    Например, в std::vector определяется тип value_type - это как раз тип элемента вектора.
    Можете использовать конструкции типа:
    sizeof(decltype(vector_val)::value_type)
    или
    sizeof(decltype(vector_val.back()))

    для вычисления размера элемента вектора, где vector_val - существующий экземпляр вектора
    Ответ написан
  • Как подключить рдп на другую сеть?

    @res2001
    Developer, ex-admin
    Можно. Но вам нужен роутер поддерживающий резервирование каналов. Подберите подходящий.
    Ответ написан
    Комментировать
  • Добавить задачу в авто запуск?

    @res2001
    Developer, ex-admin
    С помощью утилиты schtasks можно добавлять задания в планировщик.
    С помощью reg add - можно добавить ключи в реестр для автозапуска.
    Но если вам нужны права администратора при выполнении программы, то в обоих случаях при вызовах schtasks и reg вы должны обладать этими правами.
    Ответ написан
  • Как решить проблему с открытием текстового файла в C?

    @res2001
    Developer, ex-admin
    Потому что практически все функции могут вернуть ошибку тем или иным образом.
    Когда fopen возвращает NULL, то это сигнал, что произошла ошибка при выполнения функции. Вы должны проанализировать значение errno и вывести осмысленное сообщение для пользователя.
    https://en.cppreference.com/w/c/io/fopen
    Сейчас же у вас на все ошибки выдается единственное сообщение. Вы можете просто вызывать функцию strerror с кодом ошибки errno, чтоб получить нормальное актуальное сообщение об ошибке.
    https://en.cppreference.com/w/c/string/byte/strerror

    Да. Вводите полный путь к файлу, тогда у вас не будет ошибок связанных с отсутствием файла там где программа пытается его найти. Но это не отменяет правильной обработки ошибок в программе.
    Ответ написан
    Комментировать
  • Как, сидя за натом провайдера, запрашиваемая инфа из инета знает точную сеть клиента?

    @res2001
    Developer, ex-admin
    Когда вы за натом провайдера, то внешний сервис может знать только адрес с которого вы реально выходите в интернет, т.е. внешний адрес NATа.
    Внешний сервис может заблокировать этот адрес. Тогда все ваши соседи по NATу, автоматически окажутся заблокированы.

    Другой момент: у провадйера пул белых адресов, с которых клиенты могут получать доступ в инет. В пуле может быть несколько подсетей, выданных провайдеру.
    Информация о подсетях провайдера общедоступна в интернете. Ее можно получить через сервисы whois и т.п.
    Так что получив один адрес, сервис может узнать всю подсеть провайдера и заблокировать ее всю.
    Ответ написан
    3 комментария
  • Как можно передать ссылку/адрес на относительно большой файл из go в c++?

    @res2001
    Developer, ex-admin
    А если скачанный файл будет размером в гигабайты. Куда вы денете такой файл в памяти? По моему это не правильная стратегия.

    Вы можете использовать shared memory для предоставления доступа к файлу. Но вам еще надо дать знать внешней программе, что память готова для ее обработки. А так же после обработки внешняя программа должна дать знать вашей программе, что она свою работу закончила. Тут уже не обойтись без механизмов IPC: каналы, именованные каналы, unix сокеты, eventfd, обычные сокеты, ...
    Но если внешняя программа будет запускаться из вашей программы как дочерний процесс, то можно просто ждать завершения процесса. Но процесс может завершиться аварийно, так что надо анализировать код возврата, который процесс должен обязательно вернуть.
    Ответ написан
    1 комментарий
  • Почему возникает ошибка C1014 "Too many include files: depth 1024"?

    @res2001
    Developer, ex-admin
    Поставьте первой строкой в заголовке
    #pragma once
    Возможно это избавит вас от ошибки.

    И зачем вы делает
    #include "Graphic_Library.cpp"
    не понятно.
    Это может говорить о том, что интерфейс, подключаемый в заголовочном файле вы не доработали, или какие-то другие ошибки. Подобная конструкция, конечно, не является ошибкой сама по себе, но, как правило, так не делают.
    Ответ написан