Вызов windows api reggetvaluew вернул код ошибки 0

I have SQL LocalDB 2016 sp1 installed and when I execute at the command line "SQLLocalDB versions" I get the following error "Windows API call "RegGetValueW" returned error code: 0."
  • Remove From My Forums
  • Question

  • I have SQL LocalDB 2016 sp1 installed and when I execute at the command line «SQLLocalDB versions» I get the following error «Windows API call «RegGetValueW» returned error code: 0.»

    I used sysinternals procmon.exe to capture any errors accessing the registry.

    The following path was not found that seems significant.  

    HKLMSOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions13.1

    I loaded regedit and confirmed the path does not exist.  The registry does have

    HKLMSOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions13.0

    SQL LocalDB installed with Visual Studio 2017 which is not SP1 runs without errors.

    I have tried installing service packs for SQL, uninstalling/reinstalling.  I have reset windows 2 times.  In this final test I installed Windows 10 from scratch and installed only SQL Express Advanced with Sp1.  All Windows updates are installed.

    I can’t resolve this issue with reinstall or installing the updates.  

    I do not find any hits in google for this error.  The error is on a clean install of Windows 10.

    Thanks.

Answers

  • I got this on my machine, the problem was that under this registry key:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL13E.LOCALDBMSSQLServerCurrentVersion

    There is an «CurrentVersion» value that is «13.1.4001.0» and under:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions

    I had «13.0» — changing it to «13.1» fixed the error — not sure why the installed versions wasn’t changed when it went to 13.1.

    Probably uninstalling/re-installing would fix it as well.


    SSDT Dev Pack — Open source (free) Visual Studio Add-in: -Extract select statements into TVF’s -Create stub tSQLt tests -Change keyword casing -Name constraints -Ui for Merge statements https://the.agilesql.club/Projects/SSDT-Dev-Pack

    • Proposed as answer by

      Wednesday, March 29, 2017 8:59 AM

    • Marked as answer by
      .MARK
      Sunday, April 30, 2017 5:48 PM

  • Remove From My Forums
  • Question

  • I have SQL LocalDB 2016 sp1 installed and when I execute at the command line «SQLLocalDB versions» I get the following error «Windows API call «RegGetValueW» returned error code: 0.»

    I used sysinternals procmon.exe to capture any errors accessing the registry.

    The following path was not found that seems significant.  

    HKLMSOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions13.1

    I loaded regedit and confirmed the path does not exist.  The registry does have

    HKLMSOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions13.0

    SQL LocalDB installed with Visual Studio 2017 which is not SP1 runs without errors.

    I have tried installing service packs for SQL, uninstalling/reinstalling.  I have reset windows 2 times.  In this final test I installed Windows 10 from scratch and installed only SQL Express Advanced with Sp1.  All Windows updates are installed.

    I can’t resolve this issue with reinstall or installing the updates.  

    I do not find any hits in google for this error.  The error is on a clean install of Windows 10.

    Thanks.

Answers

  • I got this on my machine, the problem was that under this registry key:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL13E.LOCALDBMSSQLServerCurrentVersion

    There is an «CurrentVersion» value that is «13.1.4001.0» and under:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions

    I had «13.0» — changing it to «13.1» fixed the error — not sure why the installed versions wasn’t changed when it went to 13.1.

    Probably uninstalling/re-installing would fix it as well.


    SSDT Dev Pack — Open source (free) Visual Studio Add-in: -Extract select statements into TVF’s -Create stub tSQLt tests -Change keyword casing -Name constraints -Ui for Merge statements https://the.agilesql.club/Projects/SSDT-Dev-Pack

    • Proposed as answer by

      Wednesday, March 29, 2017 8:59 AM

    • Marked as answer by
      .MARK
      Sunday, April 30, 2017 5:48 PM

  • Remove From My Forums
  • Question

  • I have SQL LocalDB 2016 sp1 installed and when I execute at the command line «SQLLocalDB versions» I get the following error «Windows API call «RegGetValueW» returned error code: 0.»

    I used sysinternals procmon.exe to capture any errors accessing the registry.

    The following path was not found that seems significant.  

    HKLMSOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions13.1

    I loaded regedit and confirmed the path does not exist.  The registry does have

    HKLMSOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions13.0

    SQL LocalDB installed with Visual Studio 2017 which is not SP1 runs without errors.

    I have tried installing service packs for SQL, uninstalling/reinstalling.  I have reset windows 2 times.  In this final test I installed Windows 10 from scratch and installed only SQL Express Advanced with Sp1.  All Windows updates are installed.

    I can’t resolve this issue with reinstall or installing the updates.  

    I do not find any hits in google for this error.  The error is on a clean install of Windows 10.

    Thanks.

Answers

  • I got this on my machine, the problem was that under this registry key:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL13E.LOCALDBMSSQLServerCurrentVersion

    There is an «CurrentVersion» value that is «13.1.4001.0» and under:

    HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server Local DBInstalled Versions

    I had «13.0» — changing it to «13.1» fixed the error — not sure why the installed versions wasn’t changed when it went to 13.1.

    Probably uninstalling/re-installing would fix it as well.


    SSDT Dev Pack — Open source (free) Visual Studio Add-in: -Extract select statements into TVF’s -Create stub tSQLt tests -Change keyword casing -Name constraints -Ui for Merge statements https://the.agilesql.club/Projects/SSDT-Dev-Pack

    • Proposed as answer by

      Wednesday, March 29, 2017 8:59 AM

    • Marked as answer by
      .MARK
      Sunday, April 30, 2017 5:48 PM

Я использую приведенный ниже код в консольном приложении, чтобы получить версию моей ОС Windows:

#include <string>
#include <iostream>
#include <Windows.h>

int main()
{
DWORD dataSize = 0;
char buffer[256];
dataSize = sizeof(buffer);

RegGetValueA(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion",
"ProductName", RRF_RT_REG_SZ, 0, &buffer, &dataSize);

cout << buffer << endl;
return 0;
}

У меня установлена ​​Windows 10 Pro, но функция возвращает Windows 10 Enterprise. Я даже вручную перешел с помощью regedit к указанному ключу, и в разделе «Название продукта» я вижу Windows 10 Pro. Вот изображение моего regedit.

Я запустил другую функцию RtlGetProductInfo(10, 0, 0, 0, f); и он вернул значение 0x48 для f, который в соответствии с Microsoft У меня Windows 10 Enterprise Evaluation.

Теперь, в этот момент, я понимаю, что что-то не так с моей установкой Windows, но почему мой первый код возвращает другое значение, чем то, что отображается для "ProductName" в моем редакторе реестра?

Редактировать: Я должен добавить, что я запустил код на другом ПК с Windows, и он возвращает правильную версию на этом компьютере.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

Windows API вызов «RegGetValueW» возвращенный код ошибки: 0

Я получаю Windows API код ошибки вызова : 0

Я установил SSMS 2018 и пытался выяснить, установлены ли у меня какие-либо другие версии. Для этого я запустил sqllocaldb versions в CMD, но получил следующее сообщение:

Windows API вызов «RegGetValueW» вернул код ошибки: 0.

Когда я проверил вручную (через Панель управления), я увидел, что у меня установлены версии 2015 и 2016 годов. Так почему же они не показываются в CMD году?

Я пытался найти другие решения, но не нашел ничего, что имело бы для меня смысл.

2 ответа

  • YouTube AS3 Player API код ошибки 0

    В последнее время я получаю много кода ошибки 0, используя AS3 Player API. Я решил отделить свое приложение от ванильного плеера, чтобы убедиться, что ошибка не была вызвана моим приложением. Для этого я построил автономный образец AS3PlayerShim в Flex, следуя инструкциям из…

  • Пользовательское действие LsaAddAccountRights возвращает код ошибки в Windows Server 2012

    У меня есть пользовательское действие, которое используется для повышения уровня пользователей, чтобы они могли войти в систему как служба. Это запускается во время установки. Он прекрасно работает в течение многих лет на каждой операционной системе Windows вплоть до Windows Server 2012. Когда…

Этот пост мне очень помог: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1257bf26-6ab0-416d-bf26-34f128f42248/sql-2016-sp1-sqllocaldb-versions-errors-with-quotwindows-api-call-quotreggetvaluewquot?форум= отчеты

В реестре измените имя каталога в

в соответствии с версией in

В моем случае мне пришлось сменить 13.0 на 13.1.

Это все еще остается проблемой иногда в 2020 году. ответ daniell89 правильный, вот изображение, дополнительно объясняющее исправление.

enter image description here

Похожие вопросы:

Я пытаюсь создать программу с использованием Windows сокетов и получаю код ошибки 0 при попытке создать сокет int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != NO_ERROR) {…

Я пытаюсь проверить, не подделан ли мой пакет Metro style каким-либо образом, проверяя наличие всех файлов в пакете. Если какой-либо файл отсутствует, я устанавливаю состояние пакета на…

Возможный Дубликат : Facebook API ошибка 191 API Код Ошибки: 191 API описание ошибки: указанный URL не принадлежит приложению Сообщение об ошибке: redirect_uri не принадлежит приложению. — Что…

В последнее время я получаю много кода ошибки 0, используя AS3 Player API. Я решил отделить свое приложение от ванильного плеера, чтобы убедиться, что ошибка не была вызвана моим приложением. Для…

У меня есть пользовательское действие, которое используется для повышения уровня пользователей, чтобы они могли войти в систему как служба. Это запускается во время установки. Он прекрасно работает…

Я получаю код ошибки API: 1383008 ,когда пытаюсь открыть диалог оплаты Facebook в приложении canvas, Я проверил, что мой обратный вызов URL работает в тестировании, Что я должен сделать, чтобы…

Итак, я получаю код ошибки 400 с keyInvalid причиной: json = { error = { code = 400; errors = ( { domain = usageLimits; message = Bad Request; reason = keyInvalid; } ); message = Bad Request; }; } Я…

Я установил службу концентратора сообщений Bluemix, а затем добавил соединитель сообщений, чтобы получить потоковую передачу с Twitter. После этого я получил REST API url, чтобы потреблять поток…

Я делаю вызов API на Insightly API, используя этот код: var x = new XMLHttpRequest(); x.open(GET,…

Я установил SQL Server 2012 локальную БД из этой загрузки выбирая ENUx64SqlLocalDB.MSI Я запустил его OK, затем попытался использовать команду sqllocaldb , но получил эту ошибку: PS…

Ohh Sorry seeplus was doing other things.. and forgot about it. I decided to make it work with RegQueryValueExA function. SO it works.
Ahh.. about my windows SDK version.. I think is V.10.0A. Still in my winreg.h what you show me … I DON’T HAVE.. i type it to search … and doesn’t exist. My winreg.h is so small I think it doesn’t reach 200 lines .

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#ifndef _WINREG_H
#define _WINREG_H
#if __GNUC__ >= 3
#pragma GCC system_header
#endif

#ifndef WINADVAPI
#define WINADVAPI
#endif

#ifdef __cplusplus
extern "C" {
#endif
#define HKEY_CLASSES_ROOT	((HKEY)0x80000000)
#define HKEY_CURRENT_USER	((HKEY)0x80000001)
#define HKEY_LOCAL_MACHINE	((HKEY)0x80000002)
#define HKEY_USERS	((HKEY)0x80000003)
#define HKEY_PERFORMANCE_DATA	((HKEY)0x80000004)
#define HKEY_CURRENT_CONFIG	((HKEY)0x80000005)
#define HKEY_DYN_DATA	((HKEY)0x80000006)
#define REG_OPTION_VOLATILE 1
#define REG_OPTION_NON_VOLATILE 0
#define REG_CREATED_NEW_KEY 1
#define REG_OPENED_EXISTING_KEY 2
#define REG_NONE 0
#define REG_SZ 1
#define REG_EXPAND_SZ 2
#define REG_BINARY 3
#define REG_DWORD_LITTLE_ENDIAN 4
#define REG_DWORD 4
#define REG_DWORD_BIG_ENDIAN 5
#define REG_LINK 6
#define REG_MULTI_SZ 7
#define REG_RESOURCE_LIST 8
#define REG_FULL_RESOURCE_DESCRIPTOR 9
#define REG_RESOURCE_REQUIREMENTS_LIST 10
#define REG_QWORD_LITTLE_ENDIAN 11
#define REG_QWORD 11
#define REG_NOTIFY_CHANGE_NAME 1
#define REG_NOTIFY_CHANGE_ATTRIBUTES 2
#define REG_NOTIFY_CHANGE_LAST_SET 4
#define REG_NOTIFY_CHANGE_SECURITY 8

#ifndef RC_INVOKED
typedef ACCESS_MASK REGSAM;
typedef struct value_entA {
	LPSTR ve_valuename;
	DWORD ve_valuelen;
	DWORD ve_valueptr;
	DWORD ve_type;
} VALENTA,*PVALENTA;
typedef struct value_entW {
	LPWSTR ve_valuename;
	DWORD ve_valuelen;
	DWORD ve_valueptr;
	DWORD ve_type;
} VALENTW,*PVALENTW;
WINADVAPI BOOL WINAPI AbortSystemShutdownA(LPCSTR);
WINADVAPI BOOL WINAPI AbortSystemShutdownW(LPCWSTR);
WINADVAPI BOOL WINAPI InitiateSystemShutdownA(LPSTR,LPSTR,DWORD,BOOL,BOOL);
WINADVAPI BOOL WINAPI InitiateSystemShutdownW(LPWSTR,LPWSTR,DWORD,BOOL,BOOL);
WINADVAPI LONG WINAPI RegCloseKey(HKEY);
WINADVAPI LONG WINAPI RegConnectRegistryA(LPCSTR,HKEY,PHKEY);
WINADVAPI LONG WINAPI RegConnectRegistryW(LPCWSTR,HKEY,PHKEY);
WINADVAPI LONG WINAPI RegCreateKeyA(HKEY,LPCSTR,PHKEY);
WINADVAPI LONG WINAPI RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
WINADVAPI LONG WINAPI RegCreateKeyExW(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
WINADVAPI LONG WINAPI RegCreateKeyW(HKEY,LPCWSTR,PHKEY);
WINADVAPI LONG WINAPI RegDeleteKeyA(HKEY,LPCSTR);
WINADVAPI LONG WINAPI RegDeleteKeyW(HKEY,LPCWSTR);
#if (WINVER >= 0x0502)
WINADVAPI LONG WINAPI RegDeleteKeyExA(HKEY,LPCSTR,REGSAM,DWORD);
WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY,LPCWSTR,REGSAM,DWORD);
#endif
WINADVAPI LONG WINAPI RegDeleteValueA(HKEY,LPCSTR);
WINADVAPI LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR);
WINADVAPI LONG WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD);
WINADVAPI LONG WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD);
WINADVAPI LONG WINAPI RegEnumKeyExA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,LPSTR,PDWORD,PFILETIME);
WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,LPWSTR,PDWORD,PFILETIME);
WINADVAPI LONG WINAPI RegEnumValueA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
WINADVAPI LONG WINAPI RegEnumValueW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
WINADVAPI LONG WINAPI RegFlushKey(HKEY);
WINADVAPI LONG WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PDWORD);
WINADVAPI LONG WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
WINADVAPI LONG WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
WINADVAPI LONG WINAPI RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL);
WINADVAPI LONG WINAPI RegOpenKeyA(HKEY,LPCSTR,PHKEY);
WINADVAPI LONG WINAPI RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY);
WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY);
WINADVAPI LONG WINAPI RegOpenKeyW(HKEY,LPCWSTR,PHKEY);
WINADVAPI LONG WINAPI RegQueryInfoKeyA(HKEY,LPSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
WINADVAPI LONG WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
WINADVAPI LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,LPDWORD);
WINADVAPI LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,LPDWORD);
WINADVAPI LONG WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG);
WINADVAPI LONG WINAPI RegQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
WINADVAPI LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
WINADVAPI LONG WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,PLONG);
WINADVAPI LONG WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
WINADVAPI LONG WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
WINADVAPI LONG WINAPI RegRestoreKeyA(HKEY,LPCSTR,DWORD);
WINADVAPI LONG WINAPI RegRestoreKeyW(HKEY,LPCWSTR,DWORD);
WINADVAPI LONG WINAPI RegSaveKeyA(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES);
WINADVAPI LONG WINAPI RegSaveKeyW(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES);
WINADVAPI LONG WINAPI RegSetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
WINADVAPI LONG WINAPI RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
WINADVAPI LONG WINAPI RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,const BYTE*,DWORD);
WINADVAPI LONG WINAPI RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,const BYTE*,DWORD);
WINADVAPI LONG WINAPI RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD);
WINADVAPI LONG WINAPI RegUnLoadKeyA(HKEY,LPCSTR);
WINADVAPI LONG WINAPI RegUnLoadKeyW(HKEY,LPCWSTR);

#ifdef UNICODE
typedef VALENTW VALENT,*PVALENT;
#define AbortSystemShutdown AbortSystemShutdownW
#define InitiateSystemShutdown InitiateSystemShutdownW
#define RegConnectRegistry RegConnectRegistryW
#define RegCreateKey RegCreateKeyW
#define RegCreateKeyEx RegCreateKeyExW
#define RegDeleteKey RegDeleteKeyW
#if (WINVER >= 0x0502)
#define RegDeleteKeyEx RegDeleteKeyExW
#endif
#define RegDeleteValue RegDeleteValueW
#define RegEnumKey RegEnumKeyW
#define RegEnumKeyEx RegEnumKeyExW
#define RegEnumValue RegEnumValueW
#define RegLoadKey RegLoadKeyW
#define RegOpenKey RegOpenKeyW
#define RegOpenKeyEx RegOpenKeyExW
#define RegQueryInfoKey RegQueryInfoKeyW
#define RegQueryMultipleValues RegQueryMultipleValuesW
#define RegQueryValue RegQueryValueW
#define RegQueryValueEx RegQueryValueExW
#define RegReplaceKey RegReplaceKeyW
#define RegRestoreKey RegRestoreKeyW
#define RegSaveKey RegSaveKeyW
#define RegSetValue RegSetValueW
#define RegSetValueEx RegSetValueExW
#define RegUnLoadKey RegUnLoadKeyW
#else
typedef VALENTA VALENT,*PVALENT;
#define AbortSystemShutdown AbortSystemShutdownA
#define InitiateSystemShutdown InitiateSystemShutdownA
#define RegConnectRegistry RegConnectRegistryA
#define RegCreateKey RegCreateKeyA
#define RegCreateKeyEx RegCreateKeyExA
#define RegDeleteKey RegDeleteKeyA
#if (WINVER >= 0x0502)
#define RegDeleteKeyEx RegDeleteKeyExA
#endif
#define RegDeleteValue RegDeleteValueA
#define RegEnumKey RegEnumKeyA
#define RegEnumKeyEx RegEnumKeyExA
#define RegEnumValue RegEnumValueA
#define RegLoadKey RegLoadKeyA
#define RegOpenKey RegOpenKeyA
#define RegOpenKeyEx RegOpenKeyExA
#define RegQueryInfoKey RegQueryInfoKeyA
#define RegQueryMultipleValues RegQueryMultipleValuesA
#define RegQueryValue RegQueryValueA
#define RegQueryValueEx RegQueryValueExA
#define RegReplaceKey RegReplaceKeyA
#define RegRestoreKey RegRestoreKeyA
#define RegSaveKey RegSaveKeyA
#define RegSetValue RegSetValueA
#define RegSetValueEx RegSetValueExA
#define RegUnLoadKey RegUnLoadKeyA
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif

Я использую приведенный ниже код в консольном приложении, чтобы получить версию моей ОС Windows:

#include <string>
#include <iostream>
#include <Windows.h>

int main()
{
  DWORD dataSize = 0;
  char buffer[256];
  dataSize = sizeof(buffer);

  RegGetValueA(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion", 
   "ProductName", RRF_RT_REG_SZ, 0, &buffer, &dataSize);

  cout << buffer << endl;
  return 0;
}

У меня установлена ​​Windows 10 Pro, но функция возвращает Windows 10 Enterprise. Я даже вручную перешел с помощью regedit к указанному ключу и в разделе «Название продукта» вижу Windows 10 Pro. Вот изображение моего regedit.

Я запустил другую функцию RtlGetProductInfo(10, 0, 0, 0, f);, и она вернула значение 0x48 для f, что, согласно Microsoft, у меня есть Windows 10 Enterprise Evaluation.

Теперь, когда я понимаю, что что-то не так с моей установкой Windows, но почему мой первый код возвращает другое значение, чем то, которое отображается для «ProductName» в моем редакторе реестра?

Редактировать: Я должен добавить, что я запускал код на другом ПК с Windows, и он возвращает правильную версию на этом компьютере.

Понравилась статья? Поделить с друзьями:
  • Выберите папку которая содержит средства для отладки microsoft для windows
  • Выберите операционную систему которую хотите установить windows 10
  • Выберите операционную систему для запуска как убрать windows xp
  • Выберите операционную систему windows 10 на томе 2 при установке
  • Выберите не подходящее утверждение об отношении dos к первым версиям windows