Здравствуйте, ·, Вы писали:
·>Здравствуйте, Serginio1, Вы писали:
S>>·>Здравствуйте, Serginio1, Вы писали:S>>·>Кто? Зачем? Ты о чём? Предлагаешь в фаерволл регекспы на командную строку ставить? Я написал почему это не будет работать. S>>>>Там даже без регекспов а просто путь с командной строкой S>>·>Я не понял что ты предлагаешь, но это не может работать в принципе. S>>Сейчас ты можешь настроить только на путь. Но хотелось бы добавить путь с параметрами, что бы фильровать еще и по параметрам. S>> Сейчас этого нет, но возможность такая есть ибо процесс эту информацию хранит. ·>Т.е. Ты предлагаешь фильтровать по совпадению на строчку "dotnet.exe App.dll"? ·>А вот так? "dotnet.exe .\App.dll" ·>А вот так? "dotnet.exe App.dll app-args" ·>А вот так? "dotnet.exe --depsfile xyz App.dll" ·>А вот так? "dotnet.exe AnotherAppWhichRuns-theApp-Indirectly.dll" ·>А вот так? "dotnet.exe SomethingCompletelyDifferent.dll --some-args=App.dll --more"
·>Ещё раз повторюсь — такое в принципе работать не может.
Я с тебя хренею. Во первых ТП уже знает как запускает приложение.
Второе достаточно CommamdLine.Contains
Но проще что то из ПМ условия
[0]\\App.dll or [0]App.dll or [1]%App.dll
Можно напридумывать кучу вариаций, так же как и ты обрабатываешь аргументы командной строки
·>Фаерволл вешается где-нибудь внутре CreateProcess и проверяет путь до executable. А ты ещё предлагаешь парсить аргументы, разбираться в их структуре, понимать что к чему и где там имя Dll-ки который executable может загружать (а может и не загружать!) на выполнение.
if( !CreateProcess( NULL, // No module name (use command line)
argv[1], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)
Ты споришь, ради того, что бы тебе чего то написать. Раз есть командная строка, то всегда по ней можно фильтровать. Хоть Contains, хоть Like? хоть регекспы.
Это мелочь, даже по тому, что бы разобрать путь и загрузить программу в память!
Второе, кроме имени приложения еще есть отборы по протоколам портам. А сделать проверку при создании это такая мелочь.
Мы же программисты. И ты говришь, о таких мелочах
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Разраб, Вы писали:
Р>>Узнать порт несложно, либо у разрабов чуда, либо самостоятельно посмотрев в мониторе ресурсов S>Порт может назначаться динамически, если уже занят по умолчанию, ну и таких dll может быть множество каждый со своим портом
тогда присоединяюсь к совету скачать зип версию дотнет и запускать ее. файрвол же по пути работает если не ошибаюсь.
Здравствуйте, ·, Вы писали:
·>Здравствуйте, okon, Вы писали:
O>>Там предлагается "provide the absolute path to dotnet.exe" и нет возможности указать конкретную app.dll. ·>А может быть создать копию (симлинк) "dotnet2.exe", указать путь к нему и твоё приложение запускать через него?
Вот этот способ у меня не получилось заставить работать — оно проверяет название exe файла и пишет что он неправильно называется.
·>Поставить вторую копию фреймворка?
Можно попробовать, но у меня и так стоит несколько .NET SDK, а вот dotnet.exe он один похоже ставится.
·>В докер запереть, наконец?
Докер не получится там есть WinForms нужно кнопки нажимать
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Р>>>Узнать порт несложно, либо у разрабов чуда, либо самостоятельно посмотрев в мониторе ресурсов S>>Порт может назначаться динамически, если уже занят по умолчанию, ну и таких dll может быть множество каждый со своим портом Р>тогда присоединяюсь к совету скачать зип версию дотнет и запускать ее. файрвол же по пути работает если не ошибаюсь.
Да по пути. Но проще сделать exe. Так проще для клиентов.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> Да по пути. Но проще сделать exe. Так проще для клиентов.
Ты читал начальное сообщение? Готовое сделанное приложение ему даёт кто-то другой. У него есть только dll. Что _он_ может сделать?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Здравствуйте, Serginio1, Вы писали:
S>> Да по пути. Но проще сделать exe. Так проще для клиентов. ·>Ты читал начальное сообщение? Готовое сделанное приложение ему даёт кто-то другой. У него есть только dll. Что _он_ может сделать?
Сделать свое приложение где вызовет эту dll. И скомпилирует с --self-contained true
Или мы не программисты?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, okon, Вы писали:
O>>>Там предлагается "provide the absolute path to dotnet.exe" и нет возможности указать конкретную app.dll. O>·>А может быть создать копию (симлинк) "dotnet2.exe", указать путь к нему и твоё приложение запускать через него? O>Вот этот способ у меня не получилось заставить работать — оно проверяет название exe файла и пишет что он неправильно называется.
Вот же зараза. Я бы быстренько попробовал переименовать "dotnet.exe" -> "dotsux.exe" (т.е. с сохранением длины строки) и потом в бинарном редакторе сделать такую же замену внутри, т.к. имя exe прописано в самом exe зачем-то. Правда там может вылезти, что подпись сломалась. В общем наверно не взлетит, но быстро попробовать можно.
O>·>Поставить вторую копию фреймворка? O>Можно попробовать, но у меня и так стоит несколько .NET SDK, а вот dotnet.exe он один похоже ставится.
Ну это ж ms... простых путей не найдёшь. Вон же пишут, что можно отдельно поставить, чуть ли не из zip?
O>·>В докер запереть, наконец? O>Докер не получится там есть WinForms нужно кнопки нажимать
Core обещает многоплатформенность же — пусть в докере под иксами и прокинуть DISPLAY наружу.
Как насчёт написать небольшую аппликуху, которая загружает app.dll и дёргает у неё Main?
Создать в Винде ещё одного пользователя и стартовать приложение "run as" с аккаунтом? А в фаерволле запретить сеть этому аккаунту.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Serginio1, Вы писали:
S>·>Ты читал начальное сообщение? Готовое сделанное приложение ему даёт кто-то другой. У него есть только dll. Что _он_ может сделать? S>Сделать свое приложение где вызовет эту dll.
А ты знаешь как?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
S>>·>Ты читал начальное сообщение? Готовое сделанное приложение ему даёт кто-то другой. У него есть только dll. Что _он_ может сделать? S>>Сделать свое приложение где вызовет эту dll. ·>А ты знаешь как?
Я уже ссылки давал. http://rsdn.org/forum/dotnet/8645215.1
Здравствуйте, ·, Вы писали:
S>> Или ты про вызов Main? ·>yes
Есть очень много способов вызвать статический метод класса!
Начиная от прямого метода, до рефлексии включая интероп и прочие прибамбасы
Здравствуйте, ·, Вы писали:
S>> Или ты про вызов Main? ·>Гы. Bard выдал: https://g.co/bard/share/0d0cb769760e
Ну я предлагал другой подход, создать приложение включить app.dll в проект и создать единственный exe файл, автономное приложение не зависящее от dotnet
Да еще и обрезать.
Короче у ТП есть варианты
и солнце б утром не вставало, когда бы не было меня
O>1) можно ли создать exe для данной app.dll ( исходников нету ) при этом чтобы он не просто запускал еще один процесс, а в рамках него чтобы работала dll ( чтобы настройки firewall работали)
O>ОСь Windows
да, можно. используйте SmartAssembly (red-gate.com)