LINUX.ORG.RU

Запуск скрипта из Win-приложения

 


0

2

Здравствуйте !

На компе Linux Rosa. Запускаю свое Win-приложение (через PortProton). Из этого приложения мне надо выполнить линуксовый скрипт. Вроде есть такой способ - пишем скрипт

#!/bin/bash

  • какие-то команды *

и сохраняем его с расширением .exe Затем из своей проги активируем. Типа ShellExecute(0, «Open», path+«mtscript.exe»). Не получается. Может еще какие способы есть ?


и сохраняем его с расширением .exe Затем из своей проги активируем. Типа ShellExecute(0, «Open», path+«mtscript.exe»).

Ой-ой-ой-ой-ой-ой-ой! Какой ужас!

Уважаемый, вы совсем не понимаете как устроены exe-файлы? Такие махинации никогда ни у кого не прокатят!

PunkPerson
()

У меня из cmd запустилось безо всяких переименований в exe, просто создал test.sh, сделал ему chmod +x и ввожу в командную строку.

$ wine cmd
Microsoft Windows 5.1.2600

Z:\home\user1>test1.sh

Z:\home\user1>x1
x2
x3
x4
x5
x6

Z:\home\user1>exit

единственная проблема - он почему-то в фоне запускается.

SHellExecute() это по идее то же самое и должно работать, но я не проверял. Ты chmod +x не забыл?

firkax ★★★★★
()
Ответ на: комментарий от Bakamashine

bat(скрипт) не будет выполняться без разрешения на то.

Вопрос - chmod +x ведь меняет какой-то бит в файле. Из чего Linux считает его исполняемым. А какой бит ? Может прочитать где есть ?

natter
() автор топика
Ответ на: комментарий от natter

Собрать нативно - подскажите как ?

Ну для начала вопрос на чем написан код и какие библиотеки использует? Может у тебя там все к Winapi прибито и про кросскомпиляцию без глобального патчинга можно забыть.

Kolins ★★★★★
()

Выверни проблему наизнанку - запусти bash скрипт, из которого запустишь свое виндоус приложение. Затем жди отмашки от приложения на активность, которую нужно запустить через IPC, pipe или UDP соединение какое.

P.S. Данную проблематику с философской т.з. пытался прорабатывать gr_buza еще в 2003 году. Можете глянуть цитатник.

necromant ★★
()
Ответ на: комментарий от firkax

А разве оффтопик не по расширению тип определяют (т.е. mtscript.exe будет интерпретироваться как PE)? Тогда замечания ПункПерсона вполне разумны.

Или вино ведёт себя не как форточки?

mogwai ★★★★★
()
Ответ на: комментарий от mogwai

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

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

GPFault ★★★
()
Последнее исправление: GPFault (всего исправлений: 2)
Ответ на: комментарий от mogwai

Точный алгоритм не помню, но расширение точно не фиксирует формат бинарника. MZ/NE/PE засунутые в .com прекрасно работали, и наоборот com-формат с расширением .exe тоже запускается. Но если расширение не исполняемое то его даже пытаться парсить могут не начать и соответственно ничего не получится. Запуск sh-скриптов это очевидно фича wine (он их своим win-шеллом не парсит очевидно а запускает линуксовый шелл), так что все вышеперечисленные факты тут ни при чём, и проверяется именно линуксовый executable флаг.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от GPFault

Типа ShellExecute(0, «Open», path+«mtscript.exe»). Не получается.

Речь именно об исполняемых файлах, запускаемых через функции API, ожидающие только исполняемый файл

ЕМНИП: Речь идёт таки не о таком случае. В ОП описано открытие файла в ассоциированном с ним приложением. Поверхностный гуглёж подтверждает это.

mogwai ★★★★★
()
Ответ на: комментарий от mogwai

С другой стороны, тут по расширению exe определяют что файл исполняемый и его как раз передают на исполнение той самой низкоуровневой функции создания процесса, которой пофиг на расширение - и уже она может ориентироваться по содержимому, например winxp умел запускать досовскиеи exe через вспомогательный ntvdm - то есть как раз парсил файл и определял запускать напрямую или альтернативно. Вот в wine похоже есть ещё опция аьтернативного поведения - запуск на хосте

GPFault ★★★
()
Последнее исправление: GPFault (всего исправлений: 1)
Ответ на: комментарий от firkax

Точный алгоритм не помню, но расширение точно не фиксирует формат бинарника.

Не путай формат «бинарника» и «файла». сделай «move picture.jpg picture.exe» и после этого винда будет пытаться выполнить этот жопег как программу. И, естественно, вываливать ошибку.

Запуск sh-скриптов это очевидно фича wine

Очевидно, что у вина зарегистрирован какой-то обработчик для sh (или он «выше» отдаёт на откуп те файлы, которые внутри префикса не получилось «определить»). А дальнейшее - нифига.

Но если расширение не исполняемое то его даже пытаться парсить могут не начать

Об этом и говорю. Зарегистрирован в вине обработчик для PE файлов. Он ему .exe и отдаёт. А тот уже с ошибкой завершается. Что у тебя .sh корректно отработал лишь подтверждает это. Вино отдаёт бинарнику интерпретатора скрипт на исполнение. А дальше тот уже или отказывается, ибо бита нужного нет, или жрёт.

MZ/NE/PE засунутые в .com прекрасно работали, и наоборот com-формат с расширением .exe тоже запускается.

Это уже вопрос того, как винда исполняемые файлы «запускает». Если на всё «исполняемое» там одна точка входа, то возможно. Хотя, вангую, что если ты рандомный .exe в .com переименуешь - винда тоже матюгнётся на неправильный формат.

mogwai ★★★★★
()
Ответ на: комментарий от mogwai

Не путай формат «бинарника» и «файла». сделай «move picture.jpg picture.exe» и после этого винда будет пытаться выполнить этот жопег как программу. И, естественно, вываливать ошибку.

И что? Нет заголовков - значит это com-файл, ему нужно v86 (в 64-битных ОС отсутствует) и лимит на размер файла 64кб (вероятно тоже нарушено), вот и ошибка.

Очевидно, что у вина зарегистрирован какой-то обработчик для sh (или он «выше» отдаёт на откуп те файлы, которые внутри префикса не получилось «определить»). А дальнейшее - нифига.

Теоретик, ты бы хоть попробовал это перед тем как писать. Нет, sh тут ни при чём. Сделай файл test.qwe с chmod +x и он точно так же запустится.

Это уже вопрос того, как винда исполняемые файлы «запускает». Если на всё «исполняемое» там одна точка входа, то возможно. Хотя, вангую, что если ты рандомный .exe в .com переименуешь - винда тоже матюгнётся на неправильный формат.

И винда и дос запускали именно так - расширение не важно. Формат определяется по чтению заголовков в начале файла. Не надо пытаться угадывать вместо очевидного опыта.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Файлы без расширения из wine cmd не запускаются вообще, если расширение есть (любое) и есть chmod +x и есть шебанг или elf-заголовки то оно запускается нативно.

Если есть расширение exe/com и формат PE - запускается как виндопрога, наличие/отсутствие chmod +x не влияет.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Файлы без расширения из wine cmd не запускаются вообще

Можно запустить через start с флагом /unix:

start /unix /usr/bin/xterm

или из каталога / PATH:

start /unix xterm
Ja-Ja-Hey-Ho ★★★★★
()
Последнее исправление: Ja-Ja-Hey-Ho (всего исправлений: 1)

Это нормально не работает т.к виндовое приложение ничего не знает про процессы вне wine. Можно только заспавнить скрипт, но не взаимодействовать с ним. Если этого не достаточно, то есть 2 варианта:
1. сделать приложение или библиотеку, собираемую winegcc, которое уже запустит скрипт в обход wine
2. На линуксовой машине запустить сервис, который уже будет общаться с виндовым приложениям по сетевым протоколам

mittorn ★★★★★
()
Ответ на: комментарий от firkax

И что? Нет заголовков

Есть. Корректный жопеговый заголовок.

значит это com-файл

Там может быть из /dev/random

и лимит на размер файла 64кб (вероятно тоже нарушено), вот и ошибка.

0.7кб

Очевидно, что у вина зарегистрирован какой-то обработчик для sh (или он «выше» отдаёт на откуп те файлы, которые внутри префикса не получилось «определить»). А дальнейшее - нифига.

Теоретик, ты бы хоть попробовал это перед тем как писать. Нет, sh тут ни при чём. Сделай файл test.qwe с chmod +x и он точно так же запустится.

Во-первых, как тобою сказанное противоречит тому, что вино хосту на откуп отдаёт открытие файла (часть тобою процитированного текста в скобках)?
Во-вторых, я тебе пишу о том, что винда сначала по расширению определяет, виндовый это бинарник или нет. А ты мне пишешь про её логику, когда она уже определилась с тем, что «этот файл» - исполняемый.

Из написанного тобой (что успешно запускает «неродные» для винды файлы) и в ОП (что родной «.exe», внутри которого корректный скрипт, не башу отаёт, а с ошибкой вываливается) выходит, что таки прав @PunkPerson в своём замечании. ТС делает фигню - положить в «.exe» скрипт на баше не получится.

И да, будь прописана ассоциация .sh c /bin/bash, то и на 0 в execution bit будет плевать.

mogwai ★★★★★
()
Ответ на: комментарий от firkax

Повторюсь: о чём ты тогда споришь? ТС положил в .exe башевый скрипт и пытается через WinAPI его выполнить. @PunkPerson сказал, что ТС фигню делает. Ты говоришь, что @PunkPerson ошибается. Я говорю, что его замечание правильное. Оно решения не содержит - да, но и ТС не написал с какой ошибкой оно не запускается.

Что не так?

mogwai ★★★★★
()
Ответ на: комментарий от mogwai

Есть. Корректный жопеговый заголовок.

jpeg-заголовок тут не в тему, загрузчик интересуют только заголовки исполняемых файлов. jpeg это «нет заголовков».

Там может быть из /dev/random

Верно, /dev/random это валидный com-файл, если оттуда не превысить 64кб размера и случайно не сгенерятся заголовки какого-нить формата (MZ, PE итд).

Во-первых, как тобою сказанное противоречит тому, что вино хосту на откуп отдаёт открытие файла (часть тобою процитированного текста в скобках)?

Я ниже уточнил в следующем сообщении. Загрузчик сначала парсит заголовки и если видит там шебанг или elf - отдаёт нативному загрузчику. Если PE - запускает сам.

Во-вторых, я тебе пишу о том, что винда сначала по расширению определяет, виндовый это бинарник или нет. А ты мне пишешь про её логику, когда она уже определилась с тем, что «этот файл» - исполняемый.

Читай внимательнее.

выходит, что таки прав @PunkPerson в своём замечании. ТС делает фигню - положить в «.exe» скрипт на баше не получится.

Ну сколько можно?! У тебя wine что ли нет? Запусти, проверь, потом пиши. Всё получается. Автор просто забыл chmod +x.

И да, будь прописана ассоциация .sh c /bin/bash, то и на 0 в execution bit будет плевать.

🤦

Какой ещё нубский баш? .sh должно обрабатываться /bin/sh. А во-вторых, тут я уже не проверял, но сомневаюсь что такая ассоциация в wine вообще возможна. Ведь /bin/sh (и /bin/bash) напрямую он запустить не может - у него нет расширения.

firkax ★★★★★
()
Ответ на: комментарий от firkax

jpeg-заголовок тут не в тему, загрузчик интересуют

До загрузчика ещё дело не дошло. Мы находимся в моменте, когда надо принять решение, воспринимать этот файл как исполняемый, или надо искать другой исполняемый файл, которому при запуске аргументом передать путь к указанному файлу.

Какой ещё нубский баш?

Меня об этом зачем спрашиваешь? Загляни в ОП, там написано:

…пишем скрипт #!/bin/bash...

Я лишь придерживаюсь контекста.

У тебя wine что ли нет?

Нет. У меня отдельные компьютеры для винды и для линукса.

Ну сколько можно?!

На вопрос об алгоритме принятия решения виндой и отличиях в вине ты ответил описанием одного алгоритма.
Я как понять должен, что подразумевал ты: «в вине иначе, ща опишу»?
Описал один алгоритм - значит «шо для винды, шо для вина». А т.к. в винде терминал тем же шэллэкзекутом и «бинарники запускает», и «документы открывает», и определяется оно именно по расширению, то я продолжаю разговор в контексте «отличий в поведении вина и оффтопика тут не должно быть».

mogwai ★★★★★
()
Последнее исправление: mogwai (всего исправлений: 1)
Ответ на: комментарий от mogwai

До загрузчика ещё дело не дошло. Мы находимся в моменте, когда надо принять решение, воспринимать этот файл как исполняемый, или надо искать другой исполняемый файл, которому при запуске аргументом передать путь к указанному файлу.

Я об этом уже писал в самом начале диалога. Если (в досе и винде) файл .com или .exe - он передаётся загрузчику, да, на этом этапе расширение важно, но самому загрузчику уже всё равно какое оно, он смотрит заголовки. То есть замечание про «ты знаешь формат exe?» нерелевантно.

Я как понять должен, что подразумевал ты: «в вине иначе, ща опишу»?

Я прямым текстом там это указал в ответном ещё тогда комменте, процитирую:

Запуск sh-скриптов это очевидно фича wine (он их своим win-шеллом не парсит очевидно а запускает линуксовый шелл), так что все вышеперечисленные факты тут ни при чём, и проверяется именно линуксовый executable флаг

firkax ★★★★★
()
Ответ на: комментарий от firkax

ShellExecute(0, «Open», path+«mtscript.exe»).

То есть замечание про «ты знаешь формат exe?» нерелевантно.

Совсем нерелевантно, да.

Я прямым текстом там это указал в ответном ещё тогда комменте, процитирую:

Точный алгоритм не помню, но расширение точно не фиксирует формат бинарника … Запуск sh-скриптов

Тогда повторю ответ на этот комментарий:

Не путай формат «бинарника» и «файла».

Если мы говорим про «бинарник» (подразумевая исполняемый файл), то значит до этого мы уже определили, что это файл исполняемый. В третий раз говорю, что пишу тебе про точку в которой винда ещё не решила, что файл - программа.

И кстати, ввозвращаясь к вопросу прав:

Ну сколько можно?! У тебя wine что ли нет? Запусти, проверь, потом пиши. Всё получается. Автор просто забыл chmod +x.

Установил вино. Скачал микротиковый винбокс виндовый.

$ ls -lah /tmp/WinBox.exe
-rw-r--r-- 1 <usr> <grp> 46M Aug 25 20:10 /tmp/WinBox.exe
$ wine cmd
<prefix> cd z:\tmp\
z:\tmp\>./WinBox.exe

Винбокс запустился. Debian 13

Как ты там говорил? «Запусти, проверь, потом пиши»? Ну, ты это…

mogwai ★★★★★
()
Последнее исправление: mogwai (всего исправлений: 1)
Ответ на: комментарий от mogwai

Хватит тупить уже, вот почти в каждом ответе.

Совсем нерелевантно, да.

Да, нерелевантно. Расширение проверяется только для того, чтобы узнать что файл можно пытаться запустить (и то не всегда). С форматом файла оно никак не связано, заголовки парсятся уже не смотря на расширение.

Если мы говорим про «бинарник» (подразумевая исполняемый файл), то значит до этого мы уже определили, что это файл исполняемый. В третий раз говорю, что пишу тебе про точку в которой винда ещё не решила, что файл - программа.

Абстрактные форматы неисполняемых файлов тут вообще ни при чём, они никаким боком не проверяются в этом процессе. Форматы исполняемых везде (скорее всего, начиная с DOS 2.0 где их стало больше одного) определяются по сигнатурам в начале (и это делает не шелл я ядро ОС или его эмулятор в wine).

Исполняемость (это не формат а только признак «можно ли пытаться запустить») - в разных случаях по-разному, в случае линукс-прог тут chmod +x и только он (и без него не даст запустить ядро), если запускать их из wine-шелла то конкретно wine-шелл не умеет запускать без расширения (т.к. пытается туда добавить .com .exe .bat а их уже нет). Для виндопрог традиционно это делалось по расширению, но сейчас этого требования уже возможно нет (в моём wine его нет - PE бинарники запускаются с любыми расширениями). Отдельный случай - виндоскрипты (bat), они парсятся напрямую шеллом, в понимании ядра ОС программами не являются (в отличие от chmod +x sh-скриптов), можешь считать это ассоциацией на расширение.

Винбокс запустился. Debian 13
Как ты там говорил? «Запусти, проверь, потом пиши»? Ну, ты это…

Я где-то писал что виндопроги не должны запускаться? chmod +x нужен для запуска того что запускается не средствами wine (например шелл-скрипты). Прочитай внимательно диалог, ты каждый раз отвечаешь не пойми на что.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Хватит тупить уже, вот почти в каждом ответе

Отвечать надо на поставленные вопросы, а не на выдуманные тобой. Тогда и собеседники тупить не будут.

Прочитай внимательно диалог, ты каждый раз отвечаешь не пойми на что.

Я остаюсь в рамках исходного вопроса. А ты то вместо «файл» пишешь «бинарник», то ещё куда уходишь.

Да, нерелевантно в никсах. Вино тут виндовому алгоритму не следует.

FTFY. Ответь ты это сразу, разговор бы закончился. Я если про винду спрашиваю, ожидаю что про винду и ответят.

То, что вино за каким-то хреном при виде внутри .exe содержимого отличного от PE не ошибку выдаёт, как это винда делает, а стартует линуксовый процесс - я в душе не знаю. Подобную шизу Вином не пользуясь сложно предугадать. Потому и спросил «а чо, вино не так?». Но ты на этот вопрос забил. И пошлез хз куда.

Для виндопрог традиционно это делалось по расширению, но сейчас

если ты сделаешь

move notepad.exe notepad.jpg
start notepad.jpg

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

Что вино по дурости чьей-то ведёт себя иначе - это проблемы вина и его пользователей. Вместо ответа на этот вопрос, ты решил дропнуть контекст вопроса про винду и пытаешься мне рассказать как оно в линуксах. Это баг вина. Если в винде, когда пишешь «start picture.png» - открывается смотрелка картинок и в ней picture.png, то и вино не должно по такой же команде запускать picture.png на исполнение. Не важно +x оно или -x. Исключение - если внутри префикса не зарегистрировано .png в HKCR. И то, перед этим подтверждение получить, что юзер осознанно в .png исполняемые файлы хранит.

И тупит в подобной ситуации тот, кто вина поведение нормальным считает, а не тот, кто пытается добиться явного ответа на вопрос «у вас что, правда подобный идиотизм в проекте?».

mogwai ★★★★★
()
Ответ на: комментарий от mogwai

FTFY. Ответь ты это сразу, разговор бы закончился. Я если про винду спрашиваю, ожидаю что про винду и ответят.

Читай до конца сообщения а не вырывай из них куски!

Во-первых

фича wine (он их своим win-шеллом не парсит очевидно а запускает линуксовый шелл), так что все вышеперечисленные факты тут ни при чём, и проверяется именно линуксовый executable флаг.

вот эта фраза была в ПЕРВОМ моём ответе тебе, и я не знаю как ты её там не заметил

Во-вторых, нет, нерелевантно не только в никсах, но и в винде. Я не знаю чего ты прицепился к этим jpeg-ам, когда обсуждение касается запуска разных видов исполняемых файлов. Так вот, винда, как и wine, когда получает бинарник для запуска, на его расширение не смотрит, а смотрит исключительно на его внутреннюю структуру. Там может быть и PE, и NE, и MZ заголовки, а так же их отсутствие, означающее com-файл - формат первого доса. Впрочем, последние версии винды64 ничего кроме PE кажется не поддерживают, но это уже частности. У wine тут отличие в том, что поддерживаемых форматов больше (добавились шебанги и elf).

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

Это - совсем другой вопрос. Автор про это не спрашивал, а ты это раз за разом пытаешься приплести. Да, wine судя по всему сначала проверяет заголовки исполняемых бинарников, а потом файловые ассоциации расширений. Винда делает наоборот. Но, повторю, про это вопроса не было! Автору файловые ассоциации не нужны, а раз их нет, то не важно на каком этапе они бы проверялись.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Я понял что ты упускаешь из виду.

Вот смотри, логика здоровых людей:

Мы договорились, что у любого файла есть «имя» и «расширение», от этого «расширения» будет зависеть то, как мы файлы обрабатывать будем. Сделаем реестр со всеми расширениями и по ним будем определять что делать с файлом, а чтобы в прикладном ПО не приходилось самим разбираться с типами - добавим в API вызов, который решит надо ли открывать другую программу (и какую), чтобы открыть этот файл, или же надо из этого файла программу открыть. А ещё добавим туда возможность разные программы запускать для «просмотра», «редактирования» и «печати».

Они её реализовали. Нет в реестре расширения - ОС говорит «я не знаю что с этим делать». Есть - обрабатывает по правилам. Что делать, если расширение - null? То же, что и если расширение ОС незнакомо.

В подтверждение тому седые волосы учителей информатики в школах, ученики которых для .exe назначали какой-нибудь ворд «программой по умолчанию».

И вот ТС пишет «делаю шэллекзекуте опен скрипт.ексе, а баш не запускается».

Что нормальный человек, не пользующийся вином регулярно, подумает? Что оно «не запускается» потому что «нот эн экзекутабле фор виндовс».

Ты говоришь, что оно шелл-скрипты линуксовые умеет запускать. Как это может быть реализовано, если считать разработчика адекватным и чтобы соответствовало поведению винды?

  1. В HKCR запихали всяких .sh, .py и т.п. на что-то своё, что читает шебанг и запускает нужный бинарник извне префикса.
  2. Для неопознанных (в рамках префикса) расширений смотреть бит исполнения файла и пытаться стартовать «линуксовый» процесс.

Ты говоришь, что ничего не пихали в HKCR. Ну, значит «2». Я же (на тот момент ещё) считаю авторов вина адекватными.

И, собственно, поэтому

вот эта фраза

при отсутствии фразы «вино фигню делает» никак не может быть ответом на вопрос «почему оно баш-портянку из .exe не запустило». Винда обрабатывая .exe не пытается (и не должна) запустить bash. Значит и вино не должно.

Я не знаю чего ты прицепился к этим jpeg

Потому что у здоровых людей, если в HKCR есть .jpeg, которому назначен irfanview.exe, то при вызове img.jpeg в виндовом мире никак не может запуститься процесс из имг.жпег. А запустится тот самый ирфанвью. На то и нужен упомянутый ТС шеллэкзекуте.

Так вот, винда, как и wine, когда получает бинарник для запуска, на его расширение не смотрит

В который раз: ты перепрыгиваешь через момент, когда ОС определяет «для запуска» или «не для запуска». Тут винда на расширение смотрит. Ты сразу переходишь к тому, когда ОС уже решила «это надо запустить» и подбирает каким образом это запустить. И тут - да, смотрит заголовки.

У wine тут отличие в том, что поддерживаемых форматов больше (добавились шебанги и elf).

У вина тут рак в терминальной стадии. Пользователь запускает winefile, чтобы найти внутри префикса нужный файл и поредактировать его чем-нибудь. Кликает 2 раза по этому файлу, ожидая что запустится ворд, фотошоп, или что-то ещё, и там этот файл откроется. А вместо этого вино запускает программу из этого файла. И нет теперь у пользователя данных. Просто потому что сайт в хроме открытый пошуршал по диску, увидел префикс, и заменил все документы внутри префикса на бинарник с шифровальщиком.

Настолько через жопу реализовать запуск процессов - это премии достойно. Чтобы защитить двух идиотов, которые .exe к нотепаду привяжут, мы подвергнем риску всех пользователей. Браво.

Автор про это не спрашивал, а ты это раз за разом пытаешься приплести

Потому что об этом спросил я. Сразу. «Винда же вот так себя ведёт, не? В вине же не дураки, чтобы сделать иначе?». И вместо ответа на мой вопрос, ты пошёл рассказывать как оно определяет каким образом процесс из файла запустить.

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

Но можешь не отвечать уже. Я вино поставил, охренел, и выхренеть обратно не могу.

mogwai ★★★★★
()
Ответ на: комментарий от mogwai

Ладно, твоя претензия понятна, но ты её неверно классифицируешь. Она касается исключительно шелла (HKCR смотрит он), а не ОС вообще, но ты постоянно обобщаешь её на ОС. Под «просто ОС» обычно имеют ввиду ядро, а оно этими расширениями вообще не занимается.

Ну и кстати насчёт winefile я не проверял. Есть конечно основания считать что он ведёт себя так же как cmd, но это не 100%.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Она касается исключительно шелла (HKCR смотрит он), а не ОС вообще,

ЕМНИП командная строка, проводник (как минимум действия «Open,Edit,Print» в контекстном меню), да и в целом любое прикладное которому не важно «как» - все вызывают shellexecutea. А тот уже в HKCR смотрит. И в 11 они ещё что-то навернули - я не разбирался, возможно куда-то ещё смотрит.

Ну и кстати насчёт winefile я не проверял

Посмотрел. Он ведёт себя нормально. Я поспешные выводы сделал увидев, что из цмд оно запустило картинку.

mogwai ★★★★★
()
Ответ на: комментарий от natter

Собрать нативно - подскажите как ?

«Собрать нативно» ведь предполагалось в контексте определённой ситуации. Ты его сам написал? Если нет, то в каком смысле «своё»? А если да, то вопрос, на чём оно написано, прибито ли к WinAPI и др. Отсюда уже и будет делаться вывод, реально ли его собрать нативно.

hobbit ★★★★★
()