Что делать, если в Windows вместо ярлыков отображаются значки блокнота (нарушена файловая ассоциация)
Сегодня мой сосед попросил посмотреть его компьютер с установленной Windows 7. Его дочурка игралась на нем и случайно сделала запуск всех exe с помощью блокнота.
Конечно, все это забавно выглядит со стороны, мне даже пришла в голову реализация данного сбоя в виде очередной шутки на Делфи (скоро я напишу, как это сделать). Однако для человека далекого от компьютеров и способных, разве что, переустановить винду, данная ситуация была сродни катастрофе. Нужно было срочно предпринимать меры по устранению данного сбоя.
Почему я называю это сбоем? Все просто – Windows должна сама при следующем запуске вернуть все на свои места. Если это не произошло, то имеет место очередной сбой. Что ж, будем исправлять запуск Блокнота вместо исполняемой программы.
Я всегда говорил своим студентам, чтобы они изучали реестр Windows. Ведь от целостности реестра зачастую зависит «здоровье» винды. А уж о различных тонких настройках я и вовсе молчу.
Данная ситуация является ярким примером того, как неправильно измененный реестр может испортить нервы пользователю. А ведь то, через что пользователь решает запустить тот или иной файл, как раз хранится в реестре. К сожалению, посетители моего блога часто являются просто новичками, для которых многие технические подробности просто неинтересны и я их прекрасно понимаю. Человек хочет решения конкретной проблемы, а не занудные слова о чем-то ему непонятном. По этой причине я просто покажу, что нужно сделать в данной ситуации. Для тех, кто хочет узнать больше, приглашаю прочитать мои статьи по программированию.
Итак, как вы поняли, реестр запомнил, что вы хотите запускать все файлы через блокнот. Кроме того, Windows проявила инициативу и теперь все ярлыки на рабочем столе приняли вид блокнота. Не нужно думать, что это может случиться только с блокнотом — кто-то может поставить запуск и через paint и т.д. В любом случае, способ устранения будет одним.
Для устранения данной напасти вам нужно будем импортировать дефолтные ветки реестра, отвечающие за эти параметры. Скачать вы их можете здесь — первый отвечает за файловую ассоциацию, второй – за ярлыковую ассоциацию.
Просто щелкните дважды по каждому из этих файлов и перезагрузите компьютер. Сейчас должно все работать.Как видите, все очень просто.
QUIK 8.0
Внимание
После обновления на версию 8.0 все индикаторы и скрипты, сделанные на Lua перестали работать, по скриптам пишет ошибку «bad header in precompiled chunk».
никаких dll или сторонних библиотек не используется в скриптах. Скрипты скомпилированы через стандартную команду:
luac -s -o «$(FileName).luac» «$(FileNameExt)»
Что надо сделать для работы?
Цитата |
---|
Nikolay Pavlov написал: Добрый день. Для корректной работы с *.luac файлами в терминале 8.0 необходимо исходные *.lua файлы скомпилировать x64 версией Luac.exe |
Т.е. для всех версий вплоть до 7.27 мне надо компилировать по старому. а для 8.0 отдельно компилировать x64 luac.exe
Очень удобно сделали и заранее предупредили главное всех о таком событии.
Скачал с сайта только что, в файле «Использование Lua на рабочем месте», ни слова нету про компиляцию.
Цитата |
---|
Nikolay Pavlov написал: К сожалению, повторной компиляции скриптов под x64 не избежать, это последствия смены архитектуры терминала, т.к. в нем используется уже x64 интерпретатор Lua. В документацию обязательно добавим информацию. |
Конкретно вот этот компилятор годится для вашей новой архитектуры?:
Насколько я понял удобный пакет LuaForWindows не имеет в составе x64 компилятора (если имеет, то не могли бы дать ссылку).
Цитата |
---|
Александр М написал: Конкретно вот этот компилятор годится для вашей новой архитектуры?: https://sourceforge.net/projects/luabinaries/files/5.1.5/Tools%20Executables/lua-5.1.5_Win64_bin.zip. . |
Цитата |
---|
Александр М написал: Конкретно вот этот компилятор годится для вашей новой архитектуры?: https://sourceforge.net/projects/luabinaries/files/5.1.5/Tools%20Executables/lua-5.1.5_Win64_bin.zip. . |
Да, этот компилятор можно использовать (я использовал именно его). Что касается LuaForWindows, я не видел x64 сборку данного пакета, по данному вопросу могу посоветовать только обратиться к его разработчикам.
А если мне нужно использовать собственную dll как сделать x64 ?
В Visual Studio Платформу x64 выбрал, но не собирается, ругается:
Ошибка 2 error LNK2001: неразрешенный внешний символ «lua_tolstring»
Я так понимаю нужны другие файлы для x64
lauxlib.h
lua.h
lua5.1.lib
luaconf.h
Но где их взять? Подскажите.
Цитата |
---|
Павел написал: А если мне нужно использовать собственную dll как сделать x64 ? |
У меня Visual Studio 2013
На сайте выбрал Lua 5.1.4 — Release 2 (sources and Visual C++ 8/9 binaries only)
Далее Windows Libraries
И скачал lua-5.1.4_Win64_vc12_lib.zip
в Visual Studio изменил Release Win32 на Release x64 Собрал, ошибок не было.
Попробовал подключить dll библиотеку к скрипту через require(«myNew»);
Запустил скрипт и получил ошибку:
error loading module ‘myNew’ from file ‘C:\QUIK_8.0.1\myNew.dll’:
%1 не является приложением Win32.
Что я не так делаю?
Благодарю за помощь. Все получилось. Скорее всего это я уже где то что то напутал.
Удалил все и начал с самого начала, все получилось.
Пишу что делал, возможно кому то пригодится:
У меня Visual Studio 2013, на других версиях думаю так же, но не пробовал.
1. Создал проект и настроил его по инструкции (только файлы брал другие см.п.2, а так же см п.3) Сайт https://quikluacsharp.ru/qlua-c-cpp-csharp/konnektor-dll-quik-qlua-lua-c/ надеюсь ссылки на сторонние сайты можно размещать.
2. На сайте http://luabinaries.sourceforge.net/ выбрал «Lua 5.1.4 — Release 2 (sources and Visual C++ 8/9 binaries only)» Далее «Windows Libraries» и скачал «lua-5.1.4_Win64_vc12_lib.zip». Скаченные файлы разместил как сказано на сайте из п.1
3. В Visual Studio 2013, при настройке проекта, я изменил: Конфигурация Активная (Release) Платформа x64 (Создал через диспетчер конфигураций)
4. Код СИ скопировал для примера с того же сайта п.1
5. Проект успешно собрал, dll библиотека появилась.
6. Создал скрипт Lua, подключил через require. Запустил в QUIK 8.0.1.1 и все заработало.
Цитата |
---|
Павел написал: Благодарю за помощь. Все получилось. |
Установил 5.1.5 на Visual Studio 2013 — Все работает, библиотека собралась, в QUIK 8.0.1.1 скрипт запустился.
Цитата |
---|
Еще хотел бы поправить написанное мной выше, версия 5.1.4 это не последняя версия, есть еще патч 5.1.5 ( https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/ ), правильнее будет использовать его. |
Цитата |
---|
Игорь Б написал: Там несколько вариантов. Какой надо? |
Цитата |
---|
никаких dll или сторонних библиотек не используется в скриптах. Скрипты скомпилированы через стандартную команду: |
luac -s -o «$(FileName).luac» «$(FileNameExt)»
Что надо сделать для работы?
Цитата |
---|
Игорь Б написал: Visual Studio для этого не использую.Использую LuaForWindows_v5.1.4-46 |
Цитата |
---|
Еще хотел бы поправить написанное мной выше, версия 5.1.4 это не последняя версия, есть еще патч 5.1.5 ( https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/ ), правильнее будет использовать его. |
Там несколько вариантов. Какой надо?
Цитата |
---|
Для получения компилированного lua скрипта (*.luac) нужно скачать x64 luaс.exe, соответственно Вам нужно пройти по ссылке https://sourceforge.net/projects/luabinaries/files/5.1.5/Tools%20Executables/ и скачать lua-5.1.5_Win64_bin.zip. |
Цитата |
---|
Павел написал: А если мне нужно использовать собственную dll как сделать x64 ? |
кросс-сборка на линупсе
собираем некую либу my_lib :
— рядом с -L. точка, те текущий каталог
Цитата |
---|
Иван Сидоров написал: Замечательно. А что делать тем у кого 32 разрядная система? Всё что отстроено годами, теперь всё это ломать по вашей милости? |
Цитата |
---|
Иван Сидоров написал: Замечательно. А что делать тем у кого 32 разрядная система? Всё что отстроено годами, теперь всё это ломать по вашей милости? |
вас не более 10% — это демократия 🙂
Да ну, это откуда такие данные? А я думаю что 50 на 50.
Цитата |
---|
Иван Сидоров написал: Да ну, это откуда такие данные? |
Цитата |
---|
Иван Сидоров написал: А что делать тем у кого 32 разрядная система? |
Цитата |
---|
sergei написал: Более не поддерживается Win XP?»Не поддерживается» = «работать вообще не будет» |
Цитата |
---|
Imersio Arrigo написал: а WinXP — х32. |
Цитата |
---|
Imersio Arrigo написал: Никогда такого не видел. |
абсолютно обычная тема была для предприятий
у мну сохранилась и офф iso, и ключ ..
само собой есть и в сети на торрентах
людей не хотящих из ХР валить можно понять, тк валить можно только на линукс
а им скилл не позволяет.
ткчт моя их понимает, но не жалеет .. (имею право)
Цитата |
---|
Imersio Arrigo написал: Никогда такого не видел. |
абсолютно обычная тема была для предприятий
у мну сохранилась и офф iso, и ключ ..
само собой есть и в сети на торрентах
людей не хотящих из ХР валить можно понять, тк валить можно только на линукс
а им скилл не позволяет.
ткчт моя их понимает, но не жалеет .. (имею право)
Я Win XP ставлю через VirtualBox на Ubuntu. Кроме QUIK там нет ничего из соображений безопасности.Через WINE кривовато почему-то получалось, когда несколько лет назад я решение проблемы искал.
Насколько знаю, сам QUIK до недавнего времени работал только на Windows + существовал сильно урезанный по функциональности WebQUIK.
Недавно один из брокеров (ПСБ) стал бросать в сообщения Квика, что у них также есть версии для MacOS и Android. Наверно, это новьё.
А под сам Линукс, походу, Квик еще не портировали, иначе нафиг мне была бы нужна поддержка XP.
Короче, соблюдаю первый программерский принцип — «не трогай то, что работает» 🙂 Как нашел несколько лет назад решение Ubuntu — Virtual Box — WinXP, так до сих пор заморачиваться с обновлением своих познаний не приходилось.
Цитата |
---|
sergei написал: А под сам Линукс, походу, Квик еще не портировали, |
Цитата |
---|
sergei написал: первый программерский принцип — «не трогай то, что работает» |
«не нужно чинить то, что не сломано . » (с)
только не понятно к чему сии чистосердечные признания.
Цитата |
---|
Imersio Arrigo написал: Ибо кроме ядра нужен 64битный юзерспейс. |
«дрова» даже нужнее оказались 🙂
мфц/винАпи был — квик бы мог работать видимо — может запробую в виртуалке как-нить.
Цитата |
---|
новичок написал: «дрова» даже нужнее оказались 🙂 |
Ну, во-1-х поставить дров и юзерспейс не противоречит никак.
во-2-х, я в линухе долго жил на 64х ядре, с 32х юзерспейсом. Сначала было РАЕ-шное ядро, потом заменил на 64.
А на 64-либы переехал только тогда когда обнаружил что виртуалбокс 32хбитный не работает с 64хбитными модулями ядра.
Цитата |
---|
sergei написал: Через WINE кривовато почему-то получалось |
Цитата |
---|
Павел написал: Благодарю за помощь. Все получилось. |
Рад был помочь.
Еще хотел бы поправить написанное мной выше, версия 5.1.4 это не последняя версия, есть еще патч 5.1.5 ( https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/ ), правильнее будет использовать его.
Проверял на Visual Studio 2015 пакет lua-5.1.5_Win64_dll15_lib.zip, все работает, библиотеки собираются.
У меня не получается собрать почему-то
Собираю VC Enterprise 2015
библиотеку беру lua-5.1.5_Win64_vc15_lib.zip
собираю проект release x64 : dll с многобайтовой кодировкой
при сборке виду кучу неразрешенных внешних символов типа feof в функции getF или freopen в функции luaL_loadfile.
как понимаю, это имена из lua5.1.lib и дело в разрядности сборки.
тыкните пальцем, куда смотреть, пжлста.
Отвечу сам себе, раз все молчат.
Надо не полагаться ни на кого, надо брать исходники и медленно спускаться с горы и не торопясь собирать все с нуля — сначала библиотеку, потом длл.
Цитата |
---|
» target=»_blank» rel=»nofollow»>s_mike@rambler.ru написал: У меня не получается собрать почему-тоСобираю VC Enterprise 2015библиотеку беру lua-5.1.5_Win64_vc15_lib.zipсобираю проект release x64 : dll с многобайтовой кодировкойпри сборке виду кучу неразрешенных внешних символов типа feof в функции getF или freopen в функции luaL_loadfile.как понимаю, это имена из lua5.1.lib и дело в разрядности сборки. |
Цитата |
---|
s_mike@rambler.ru написал: У меня не получается собрать почему-тоСобираю VC Enterprise 2015библиотеку беру lua-5.1.5_Win64_vc15_lib.zipсобираю проект release x64 : dll с многобайтовой кодировкойпри сборке виду кучу неразрешенных внешних символов типа feof в функции getF или freopen в функции luaL_loadfile.как понимаю, это имена из lua5.1.lib и дело в разрядности сборки. |
Добрый день.
В итоге у Вас получилось собрать? Какую библиотеку собираете, собственную или общедоступную?
Зачастую просто поменять Lua-шные исходники в проекте не достаточно, нужно проверить все линки в настройках проекта.
взял исходники Lua 5.1.5, собрал их в модели 64, проверил. Вроде нормально, работу работают.
после чего на основе получившейся .lib скомпоновал свою dll. Тоже на первый взгляд удачно. Время покажет насколько.
все остальные библиотеки и способы, в том числе те, на которые здесь были ссылки, не собрались нормально.
Цитата |
---|
» target=»_blank» rel=»nofollow»>s_mike@rambler.ru написал: все остальные библиотеки и способы, в том числе те, на которые здесь были ссылки, не собрались нормально. |
Цитата |
---|
Юрий написал: Очень грустно что разработчики поставили людей перед фактом. Или работай в старой но у тебя не будет ни УДС ни части другой информации или переходи в новую но вместо торговли бегай в поисках тех у кого покупал модули, которые облегчали тебе работу. Такое отношение к клиенту у Вас проходит только потому что Вы монополисты, если бы была возможность то плюнул бы на все удобства quik и ушел бы в другую систему. Вы похоже зазвездились. Жалко. |
Это вопрос расстановки приоритетов в условиях ограниченного ресурса: можно тратить время и силы на производство, тестирование, документирование и сопровождение двух параллельных платформ, но в таком случае ресурса на дальнейшее развитие терминала (в том числе и реализацию многочисленных пожеланий пользователей) не останется. В таких условиях выбор приоритетов был очевиден. В то же время мы, конечно, понимаем те затруднения, с которыми столкнулись пользователи нашего продукта, и со своей стороны прикладываем все усилия для того, чтобы помочь их разрешить.
Добавил в архив тестовый пример DLL на C++ для QUIK 8 (x64)
Там же можно взять .lib-файл для сборки своих проектов
Цитата |
---|
Аркадий написал: С квиком 7семеркой брокер обнуляет безопасность |
Это не так от слова совсем. По всей видимости Вы поняли своего брокера не верно.
Цитата |
---|
s_mike@rambler.ru написал: взял исходники Lua 5.1.5, собрал их в модели 64, проверил. Вроде нормально, работу работают. |
после чего на основе получившейся .lib скомпоновал свою dll. Тоже на первый взгляд удачно. Время покажет насколько.
все остальные библиотеки и способы, в том числе те, на которые здесь были ссылки, не собрались нормально.
алгоритм другой должен быть, либина вообще-то по уму должна быть от квиковской lua, а не от общедоступной. они немного отличаются.
алгоритм:
1. получаем список функций экспорта библиотеки, где lua5.1.dll — библиотека из поставки quik 8.0
dumpbin.exe /EXPORTS lua5.1.dll > lua5.1.exports
2. форматируем файлик .exports, оставляя только имена функций и добавляя сверху одно слово EXPORTS, пример
EXPORTS
is_proxy_dll
luaA_pushobject
luaC_barrierback
.
3. меняем расширение .exports на .def
4. создаём lib:
lib.exe /def:lua5.1.def /machine:x64 /out:lua5.1.lib
я использовал утилиты из состава MSVC:
MSVC\2017\Community\VC\Tools\MSVC\14.14.26428\bin\Hostx64\x64\
Всем привет, ребята помогите откомпилировать в 64 бит, я в 64х битном компилировании и в MSVC Studio почти ноль, немного компилировал на Mingw 32х битном, делал руководствуясь примерами выше https://quikluacsharp.ru/qlua-c-cpp-csharp/konnektor-dll-quik-qlua-lua-c/ , неполучается, скачал MSVC Community 2019, но не думаю что проблема в отличии версии 2019 от 2013, сделал все один в один, в точности как в странице по ссылке, а компилировать пробовал библиотечку Lua file system — https://github.com/keplerproject/luafilesystem
скачал https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/lua-5.1.5_Win64_.
закинул хедеры от исходников и из луабинов 5.1.5 в созданную папку с проектом, повторил все шаги, на этапе сборки система ругается, см.скриншот, я так понимаю потому что исходник lfs.c — это С а не С++, но в msvc я не вижу нигде возможности задать чтобы исходники были С, только С++ или C#,
Причем на mingw (32-ух битном я компилил эту библиотечку вообще без проблем, так что ошибок никаких там в коде быть не может) решил поэтому попробовать на Mingw-w64, скачал установил, скачал под мингв64 и луабинарии — https://sourceforge.net/projects/luabinaries/files/5.1.5/Windows%20Libraries/Static/lua-5.1.5_Win64_.
распаковал, раскидал всё по нужным папкам в мингв64, путь к исполняемым файлам мингв64 в винде в системных переменных установил в path — c:\mingw64\bin
захожу в папку с распакованными исходниками lfs, где lfs.c лежит и выполняю —