Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2017, 15:53   #1
motomaster
 
Регистрация: 09.09.2009
Сообщений: 5
Вопрос .NET 2.0 на Windows 8, 10

Приветствую появилась цель заставить C# приложение работать на всех версиях Windows без дополнительных установок .net framework.
Делаю C# приложение на .net 2.0 оно работает на Windows 7 но не работает на 8 и 10. По умолчанию на Windows 8 и 10 нету .net framework 2.0 или 3.5. Есть одна особенность если изменить несколько байтов в приложении .net framework 2.0 тогда оно будет работать и на Windows 8 и 10.

А именно находим нужные байты:


Меняем их на:


И программа работает на Windows 8 и 10 но не работает на Windows 7.
Задача сделать программно изменение переменной в которой хранится версия .net framework в случае если была выдана ошибка на Windows 10. Ошибка выглядит так:


Если коротко - Отлавливаем окно в Windows 10 о том что нету нужного .net framework меняем значение переменной на нужное и программа идет дальше. Я так понимаю реализовать это с помощью ассемблера нужно без дополнительных программ или библиотек и так чтобы антивирус не орал что это супер троян который убивает ваш компьютер

P.S. Любым советам буду рад. Да знаю задача возможно поставлена не корректно или заезжена тема но хочу ее попробовать решить.
motomaster вне форума Ответить с цитированием
Старый 03.02.2017, 16:09   #2
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Господи иисусе. Почему просто не поставить фреймворк?
the_deer_one вне форума Ответить с цитированием
Старый 03.02.2017, 16:46   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А потом .net говно, какие-то странные баги лезут...
p51x вне форума Ответить с цитированием
Старый 03.02.2017, 17:25   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от motomaster Посмотреть сообщение
Приветствую появилась цель заставить C# приложение работать на всех версиях Windows без дополнительных установок .net framework.
Цитата:
Сообщение от motomaster Посмотреть сообщение
Да знаю задача возможно поставлена не корректно
Угу. Более чем некорректно.
Рекомендую просто выкинуть эту идею из головы, как изначально ошибочную.
Просто поймите, приложение на C# внутри себя содержит обращение к ядру (фреймворку) - вызов нужных функций ядра. Требование к номеру фрейморка, это обусловлено в первую очередь тем, что в разных версиях фрейморка вызов процедур (и сами процедуры) немного отличаются.
Поэтому, в лучшем случае у Вас ничего не получится.
В худшем, программа будет иметь скрытые баги - т.е. что-то, типа Hello, World! может быть и заработает, а что-то по сложнее - будет глючить и падать.
Или Вы этого и добиваетесь?

И, главное, зачем это всё?!
Вам не нравится .NET Framework? Так не используйте его совсем!
Пишите нативные приложения, которым нужна только сама Windows (или вообще уходите от винды )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.02.2017, 18:17   #5
motomaster
 
Регистрация: 09.09.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от the_deer_one Посмотреть сообщение
Господи иисусе. Почему просто не поставить фреймворк?
Потому-что человек быстрее удалит программу и не будет разбираться в вопросе чем будет ставить framework.


Цитата:
Сообщение от p51x Посмотреть сообщение
А потом .net говно, какие-то странные баги лезут...
Проверил на своей программе если сделать как я сказал программа работает корректно.


Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Угу. Более чем некорректно.
Рекомендую просто выкинуть эту идею из головы, как изначально ошибочную.
Просто поймите, приложение на C# внутри себя содержит обращение к ядру (фреймворку) - вызов нужных функций ядра. Требование к номеру фрейморка, это обусловлено в первую очередь тем, что в разных версиях фрейморка вызов процедур (и сами процедуры) немного отличаются.
Поэтому, в лучшем случае у Вас ничего не получится.
В худшем, программа будет иметь скрытые баги - т.е. что-то, типа Hello, World! может быть и заработает, а что-то по сложнее - будет глючить и падать.
Или Вы этого и добиваетесь?

И, главное, зачем это всё?!
Вам не нравится .NET Framework? Так не используйте его совсем!
Пишите нативные приложения, которым нужна только сама Windows (или вообще уходите от винды )
Лучше помогите сделать чем давать советы.
motomaster вне форума Ответить с цитированием
Старый 03.02.2017, 18:47   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А почему не собрать под 4.0?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.02.2017, 19:14   #7
motomaster
 
Регистрация: 09.09.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А почему не собрать под 4.0?
тогда не работает на Windows 7
motomaster вне форума Ответить с цитированием
Старый 03.02.2017, 19:36   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну соберите 2 версии, под вин8+ и под старые.

Или сделайте инсталятор и ставьте сами 4.0 если нет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.02.2017, 21:57   #9
motomaster
 
Регистрация: 09.09.2009
Сообщений: 5
По умолчанию

Как оказалось частичное решение может быть создать файл MyProgram.exe.config с таким содержимым:
Код HTML:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
И сборка будет работать на всех Windows, НО есть ли вариант сделать так чтобы не было два файла это дико не удобно. Если у кого есть идеи слушаю их и жду ответов.

P.s. копал в сторону CLRCreateInstance позволяет проверить а .net framework а потом запустить на выбранном framework свою C# dll, но мне не нужно запускать dll или чтобы было два файла. Спасибо за ответы.
motomaster вне форума Ответить с цитированием
Старый 04.02.2017, 16:37   #10
motomaster
 
Регистрация: 09.09.2009
Сообщений: 5
По умолчанию

Чтобы хоть как-то подогреть внимание готов заплатить 100$ тому кто предоставит решение моей задачи учитывая выше сказанное, без дополнительного ПО и лишних файлов. Спасибо.
motomaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с библиотеками Windows в .NET D][mon C# (си шарп) 5 11.02.2013 10:17
C++.net Windows Forms coollife Помощь студентам 0 13.12.2012 20:17
PascalABC.NET, windows.forms *stRong* Помощь студентам 0 03.06.2010 21:47
Delphi и Microsoft Windows CE NET 5.0? oooooo111 Общие вопросы Delphi 0 28.01.2010 03:32