Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/55: Рейтинг темы: голосов - 55, средняя оценка - 4.91
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
.NET 4.x

Компиляция под Windows XP на VS 2017

05.07.2018, 13:18. Показов 12381. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Взможно ли компилировать в среде разработки Visual Studio 2017 чтобы проект также запускался на Windows XP или такой больше поддержки нету. Просто использовать пиратский VS 2010 не охото. А поддержка Windows XP для проектов нужна. Да и я уже попробывал. Проект от VS 2017 без танцов с бубном просто так на VS 2010 не запустится.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2018, 13:18
Ответы с готовыми решениями:

Компиляция под андроид из под Windows 10
Всем привет. У меня есть проект, реализованный с использованием QML + Qt 5.5.1 Он отлично компилируется под андроид из под Linux. Однако...

Компиляция под Windows 95
Подскажите, можно ли на откомпилировать проект на XE6 так, чтобы программа работала на Windows 95? (Сейчас при запуске exe-файла выдается...

Компиляция PCRE 8.01 под Windows
Доброго времени суток. Понадобилось использовать в программе регулярные выражения. Погуглил, выяснил, что наилучшим вариантом будет...

56
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
05.07.2018, 16:42
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Он не создал этого файла. Ошибка появиась но файла нету
https://social.msdn.microsoft.... m=netfxbcl
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18400 / 14331 / 5370
Регистрация: 17.03.2014
Сообщений: 29,009
Записей в блоге: 1
05.07.2018, 16:43
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Он не создал этого файла.
Точно? Может ты не там смотришь? Покажи скриншот папки %TEMP%.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
05.07.2018, 16:43  [ТС]
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Он не создал этого файла. Ошибка появиась но файла нету
Создал. Просто не сразу допер что в папке Temp
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.ComponentModel.Win32Exception: Параметр задан неверно
   в System.Drawing.Icon.Initialize(Int32 width, Int32 height)
   в System.Drawing.Icon..ctor(SerializationInfo info, StreamingContext context)
   --- Конец трассировки внутреннего стека исключений ---
   в System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
   в System.Reflection.RuntimeConstructorInfo.SerializationInvoke(Object target, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
   в System.Runtime.Serialization.ObjectManager.DoFixups()
   в System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex)
   в System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase, Boolean isString)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase)
   в System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream)
   в System.Resources.ResourceManager.GetObject(String name)
   в DuneHack_Editor.AL7_frmMain.InitializeComponent()
   в DuneHack_Editor.AL7_frmMain..ctor()
   в DuneHack_Editor.Program.Main()
 
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.ComponentModel.Win32Exception: Параметр задан неверно
   в System.Drawing.Icon.Initialize(Int32 width, Int32 height)
   в System.Drawing.Icon..ctor(SerializationInfo info, StreamingContext context)
   --- Конец трассировки внутреннего стека исключений ---
   в System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
   в System.Reflection.RuntimeConstructorInfo.SerializationInvoke(Object target, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
   в System.Runtime.Serialization.ObjectManager.DoFixups()
   в System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex)
   в System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase, Boolean isString)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase)
   в System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream)
   в System.Resources.ResourceManager.GetObject(String name)
   в DuneHack_Editor.AL7_frmMain.InitializeComponent()
   в DuneHack_Editor.AL7_frmMain..ctor()
   в DuneHack_Editor.Program.Main()
 
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.ComponentModel.Win32Exception: Параметр задан неверно
   в System.Drawing.Icon.Initialize(Int32 width, Int32 height)
   в System.Drawing.Icon..ctor(SerializationInfo info, StreamingContext context)
   --- Конец трассировки внутреннего стека исключений ---
   в System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
   в System.Reflection.RuntimeConstructorInfo.SerializationInvoke(Object target, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
   в System.Runtime.Serialization.ObjectManager.DoFixups()
   в System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex)
   в System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase, Boolean isString)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase)
   в System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream)
   в System.Resources.ResourceManager.GetObject(String name)
   в DuneHack_Editor.AL7_frmMain.InitializeComponent()
   в DuneHack_Editor.AL7_frmMain..ctor()
   в DuneHack_Editor.Program.Main()
 
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.ComponentModel.Win32Exception: Параметр задан неверно
   в System.Drawing.Icon.Initialize(Int32 width, Int32 height)
   в System.Drawing.Icon..ctor(SerializationInfo info, StreamingContext context)
   --- Конец трассировки внутреннего стека исключений ---
   в System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
   в System.Reflection.RuntimeConstructorInfo.SerializationInvoke(Object target, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
   в System.Runtime.Serialization.ObjectManager.DoFixups()
   в System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex)
   в System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase, Boolean isString)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase)
   в System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream)
   в System.Resources.ResourceManager.GetObject(String name)
   в DuneHack_Editor.AL7_frmMain.InitializeComponent()
   в DuneHack_Editor.AL7_frmMain..ctor()
   в DuneHack_Editor.Program.Main()
 
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.ComponentModel.Win32Exception: Параметр задан неверно
   в System.Drawing.Icon.Initialize(Int32 width, Int32 height)
   в System.Drawing.Icon..ctor(SerializationInfo info, StreamingContext context)
   --- Конец трассировки внутреннего стека исключений ---
   в System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
   в System.Reflection.RuntimeConstructorInfo.SerializationInvoke(Object target, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
   в System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
   в System.Runtime.Serialization.ObjectManager.DoFixups()
   в System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   в System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex)
   в System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase, Boolean isString)
   в System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase)
   в System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream)
   в System.Resources.ResourceManager.GetObject(String name)
   в DuneHack_Editor.AL7_frmMain.InitializeComponent()
   в DuneHack_Editor.AL7_frmMain..ctor()
   в DuneHack_Editor.Program.Main()
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
05.07.2018, 16:46
Судя по исключениям у вас в ресурсах какие-то кривые иконки.

Windows XP does not support PNG icons. Create a non-PNG ico for the application, and the application will run fine
https://stackoverflow.com/ques... windows-xp
https://stackoverflow.com/ques... s-in-net-2
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
05.07.2018, 16:54  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
Судя по исключениям у вас в ресурсах какие-то кривые иконки.
Проверил. Да действительно без иконки работает. И банально проблема только в иконки была. Тогда почему скомпилированный под NET 4.0 на Windows XP не работает хоть NET 4.0 стоит на Windows xp
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
05.07.2018, 16:55
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Тогда почему скомпилированный под NET 4.0 на Windows XP не работает хоть NET 4.0 стоит на Windows xp
В чем заключается "не работает"?
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
05.07.2018, 16:57  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Скачай его с my.visualstudio.com.
Нету там его. Там открывается вот эта страница:

Code
1
https://my.visualstudio.com/?auth_redirect=true
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18400 / 14331 / 5370
Регистрация: 17.03.2014
Сообщений: 29,009
Записей в блоге: 1
05.07.2018, 16:59
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Нету там его.
Есть. Я проверил.

Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Там открывается вот эта страница:
Нужно войти под учетной записью Microsoft сначала. Если у тебя её нет, то создай.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
05.07.2018, 17:04
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Нету там его.
А это что тогда?
Миниатюры
Компиляция под Windows XP на VS 2017  
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
05.07.2018, 17:15  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
В чем заключается "не работает"?
Code
1
2
3
4
5
System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в KAM_Remake_Launcher.AL7_Class_Additional.CheckLcenseKMR(String& outFNKMR)
   в KAM_Remake_Launcher.AL7_frmMain.SetPathKMR()
   в KAM_Remake_Launcher.AL7_frmMain..ctor()
   в KAM_Remake_Launcher.Program.Main()
А вообще ошибка связанная с NET Framework
На Windows 10 запускается компилирован под NET 4
На Windows XP также стоит 4.0
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
05.07.2018, 17:18
Похоже на баг в вашем коде. pdb файлы докиньте в папку чтобы отображались номера строк, а то так не понять где там у вас конкретно NullReferenceException...
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18400 / 14331 / 5370
Регистрация: 17.03.2014
Сообщений: 29,009
Записей в блоге: 1
05.07.2018, 17:18
Alexandr_7, положи рядом с exe еще файл с расширением pdb. Он лежит рядом с приложением в выходной папке VS. Тогда в тексте исключения будут еще названия файлов и номера строк. Так будет проще локализовать ошибку.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
05.07.2018, 17:26  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Alexandr_7, положи рядом с exe еще файл с расширением pdb. Он лежит рядом с приложением в выходной папке VS. Тогда в тексте исключения будут еще названия файлов и номера строк. Так будет проще локализовать ошибку.
Code
1
2
3
4
5
System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в KAM_Remake_Launcher.AL7_Class_Additional.CheckLcenseKMR(String& outFNKMR) в D:\Projects\C#\KAM_Remake_Launcher\AL7_Class_Additional.cs:строка 152
   в KAM_Remake_Launcher.AL7_frmMain.SetPathKMR() в D:\Projects\C#\KAM_Remake_Launcher\AL7_frmMain.cs:строка 153
   в KAM_Remake_Launcher.AL7_frmMain..ctor() в D:\Projects\C#\KAM_Remake_Launcher\AL7_frmMain.cs:строка 273
   в KAM_Remake_Launcher.Program.Main() в D:\Projects\C#\KAM_Remake_Launcher\Program.cs:строка 19
Повторюсь что на Windows 10 работает нормально
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
05.07.2018, 17:27
И что там у вас в строке 152 файла AL7_Class_Additional.cs? Почему вы сразу это не показываете? Вангую где-то в методе происходит запись/чтение чего-то в файл/реестр... И из-за различий WinXP и более новых ОС происходит не то что вы ожидали...
1
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
05.07.2018, 17:32  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
И что там у вас в строке 152 файла AL7_Class_Additional.cs? Почему вы сразу это не показываете?
Там работа с реестром
C#
1
b = (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") != null); //152 строка
Метод полностью
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public bool CheckLcenseKMR(out string outFNKMR)
        {
            var b = false;
            using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
            using (var key = hklm.OpenSubKey(@"SOFTWARE\JOYMANIA Entertainment\KnightsandMerchants TPR"))
            {
                b = (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") != null);
 
                try
                {
                    outFNKMR = key.GetValue("RemakeDIR").ToString() + KMRLauncher.FNKMR;
                }
                catch
                {
                    outFNKMR = "";
                }
            }
            return b;
        }
C#
1
if (Additional.CheckLcenseKMR(out FileNameKMR) == true) // 153 строка
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
if (SetPathKMR() == true) // 273 строка
//Сам метод
bool SetPathKMR()
        {
            btnStartKAM.Enabled = Additional.GetFileNameKAM();
 
            if (Additional.CheckFNKMR(Additional.Settings.FileNameKMR) == true)
            {
                lblKMRVer.Text = "Версия KAM Remake: " + Additional.GetVersionKMR();
                ReGameElements(true);
                return true;
            }
 
            var FileNameKMR = Additional.Settings.FileNameKMR;
 
 
            if (Additional.CheckLcenseKMR(out FileNameKMR) == true)
            {
                lblKMRVer.Text = "Версия KAM Remake: " + Additional.GetVersionKMR();
                if (Additional.CheckFNKMR(FileNameKMR) == true)
                {
                    Additional.Settings.FileNameKMR = FileNameKMR;
                    ReGameElements2(true);
                    return true;
                }
                else
                {
                    var FrmVerGame = new AL7_frmMessageBox();
                    if (FrmVerGame.ShowMyDialog("Директория игры не найдена", "У вас лицензия, но папку с игрой найти не удалось!\r\nХотите указать папку с игрой?", "Да", "Нет") == DialogResult.Yes)
                    {
                        if (GetFileNameKMR() == true)
                        {
                            ReGameElements2(true);
                            return true;
                        }
                        else
                        {
                            MessageBox.Show("Игра указана неверно!", "Директория игры не найдена", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            ReGameElements2(false);
                            return false;
                        }
                    }
                    else
                    {
                        ReGameElements2(false);
                        return false;
                    }
                }
            }
            else
            {
                var FrmVerGame = new AL7_frmMessageBox();
                if (FrmVerGame.ShowMyDialog("Директория игры не найдена", "У вас нет лицензии или игра не установленна!\r\nХотите указать папку с игрой?", "Да", "Нет") == DialogResult.Yes)
                {
                    if (GetFileNameKMR() == true)
                    {
                        lblKMRVer.Text = "Версия KAM Remake: ???";
                        ReGameElements(true);
                        return true;
                    }
                    else
                    {
                        lblKMRVer.Text = "Игра не найдена!";
                        MessageBox.Show("Игра указана неверно!", "Директория игры не найдена", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        ReGameElements(false);
                        return false;
                    }
                }
                else
                {
                    ReGameElements(false);
                    return false;
                }
            }
        }
C#
1
Application.Run(new AL7_frmMain()); // 19 строка
Вообщето по факту все логично. Ключа SOFTWARE\JOYMANIA Entertainment\KnightsandMerchants TPR в Windows XP нету. Может быть по этому. Но оно тогда и не должно происхдить. Тобишь вообще вот это:
C#
1
2
3
4
5
6
7
8
9
10
b = (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") != null);
 
                try
                {
                    outFNKMR = key.GetValue("RemakeDIR").ToString() + KMRLauncher.FNKMR;
                }
                catch
                {
                    outFNKMR = "";
                }
Или я не понимаю тогда как Using работает
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
05.07.2018, 17:33
Ну вот у вас тут key == null, т.к. в реестре нету такой записи... Почему нету? Может у вас прав за запись не хватило? Если это конечно ваша прога создает данную запись...
C#
1
b = (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") != null); //152 строка
Я бы изменил так
C#
1
b = (key != null) && (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") != null); //152 строка
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18400 / 14331 / 5370
Регистрация: 17.03.2014
Сообщений: 29,009
Записей в блоге: 1
05.07.2018, 17:35
Цитата Сообщение от Someone007 Посмотреть сообщение
Почему нету? Может у вас прав за запись не хватило?
Скорее просто нет ключа. Его по идее какой-то внешний софт создает.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
05.07.2018, 17:49  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Скорее просто нет ключа. Его по идее какой-то внешний софт создает.
Да. Ключ создает другая программа. Его вообще может и не быть. Видимо using произойдет даже если ключа там и нету.
По факту прийдется так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public bool CheckLcenseKMR(out string outFNKMR)
        {
            var b = false;
            using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
            using (var key = hklm.OpenSubKey(@"SOFTWARE\JOYMANIA Entertainment\KnightsandMerchants TPR"))
            {
                if (key == null)
                {
                    outFNKMR = "";
                    return b;
                }
 
                b = (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") != null);
 
                try
                {
                    outFNKMR = key.GetValue("RemakeDIR").ToString() + KMRLauncher.FNKMR;
                }
                catch
                {
                    outFNKMR = "";
                }
            }
            return b;
        }
Добавлено через 2 минуты
Цитата Сообщение от Someone007 Посмотреть сообщение
b = (key != null) && (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") != null); //152 строка
Так ведь же (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") все равно произойдут и вызовут исключение
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
05.07.2018, 18:01
Цитата Сообщение от Alexandr_7 Посмотреть сообщение
Так ведь же (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") все равно произойдут и вызовут исключение
С чего это вдруг? Первое же условие не выполнится и остальные даже проверяться не будут...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        public bool CheckLcenseKMR(out string outFNKMR)
        {
            using (var hklm = Microsoft.Win32.RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
            using (var key = hklm.OpenSubKey(@"SOFTWARE\JOYMANIA Entertainment\KnightsandMerchants TPR"))
            {
                object dir;
                if (key != null && (key.GetValue("Version") != null) && (key.GetValue("RemakeVersion") != null) && ((dir = key.GetValue("RemakeDIR")) != null))
                {
                    outFNKMR = dir.ToString() + KMRLauncher.FNKMR;
                    return true;
                }
                else
                {
                    outFNKMR = "";
                    return false;
                }
            }
        }
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
05.07.2018, 18:07  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
С чего это вдруг? Первое же условие не выполнится и остальные даже проверяться не будут...
Спс. Буду знать.
А на счет кода то нет. Тут такое дело что если RemakeDIR не существует то outFNKMR нужно присвоить пустую строку но вот RemakeDIR может и не существовать а ключ RemakeVersion может существовать
Сделано это для совместимости со старой версией программы. тарая версия не содержит ключа RemakeDIR. Ключ RemakeDIR появится в новой версии игры.
А моя программа по сути Лунчер для пк игры.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2018, 18:07

Компиляция под Windows x64
Здравствуйте есть 2 компьютера на 1 стоит х32 на котором компилируется программа а на другом х64 винда на котором нужно программу...

Компиляция QT4.3.2 под Windows 95
Имеется Windows 95. Установлен QT4.3.2 и MinGW-3.4.2. При запуске qmake выскакивает ошибка :(: Файл QMAKE.EXE связан с...

Компиляция под Windows из Linux
Компиляция под Windows из Linux - возможно ли это? По идее как-то можно с MinGW, есть у кого опыт?

QT компиляция из Windows под Linux
Поделитесь, если не сложно, линком как сие делать.

Компиляция проекта под linux из windows
Скорее всего раздел не подходит, просто не знаю к какому это относится больше... Вот есть проект Visual Studio C++, это библиотека для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru