Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/48: Рейтинг темы: голосов - 48, средняя оценка - 4.69
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10

Проверка Windows на подлинность (локальная)

30.04.2021, 13:32. Показов 11218. Ответов 94

Студворк — интернет-сервис помощи студентам
Начиная с Windows 7 есть функция для проверки подлинности системы - SLIsGenuineLocalEx.
Проверка проводится локально.
PureBasic
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
;https://docs.microsoft.com/en-us/windows/win32/api/slpublic/nf-slpublic-slisgenuinelocalex
 
#SL_GEN_STATE_IS_GENUINE = 0
 
 hDll = OpenLibrary(#PB_Any, "sppc.dll")    
If hDll 
    *SLIsGenuineLocal = GetFunction(hDll, "SLIsGenuineLocalEx")
    If *SLIsGenuineLocal
    If CallFunctionFast(*SLIsGenuineLocal, ?IID_NAME, 0, @test) = #S_OK
            If test = #SL_GEN_STATE_IS_GENUINE
               MessageRequester("Поздравляю! ", "Ваша Windows считается подлинной.", #PB_MessageRequester_Info)
            Else
               MessageRequester("Внимание! ",  "Ваша Windows не прошла проверку подлинности.", #PB_MessageRequester_Warning)
            EndIf
        EndIf
    EndIf    
    CloseLibrary(hDll)
  Else
    
   MessageRequester("Внимание! ",  "Ваша Windows немного устарела для этой проверки.", #PB_MessageRequester_Warning)  
  EndIf
  
  DataSection 
  IID_NAME:
  Data.l $55c92734
  Data.w $d682, $4d71
  Data.b $98, $3e, $d6, $ec, $3f, $16, $05, $9f
 EndDataSection
Проверяйте, тестируйте:
Вложения
Тип файла: zip genuine.zip (3.3 Кб, 25 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2021, 13:32
Ответы с готовыми решениями:

Проверка Windows на подлинность
Добрый день. Подскажите как проверить Windows (любую) - лицензионная она или пиратская анонимно и без последствий для самой винды.

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

Проверка на подлинность Windows 7
У меня стоит Windows 7. 64 разряда.Активирована.С недавних пор при открытии любого текстового документа выкидывает окно: Копия Windows...

94
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.05.2021, 05:24
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вот что написано в документации по ошибкам - see Common HRESULT Values. Что, трудно что ли почитать описание в MSDN
Посмотрите ещё на это
https://docs.microsoft.com/en-... dfrom=MSDN
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.05.2021, 07:57
Цитата Сообщение от locm Посмотреть сообщение
Согласно описания функции если она выполнена без ошибок, результат S_OK. Может ли эта функция вернуть не S_OK, но при этом она выполнена без ошибок и ее результат достоверен? Если нет, то зачем вы доказываете кто код написан неправильно?
Зачем задавать один и тот же вопрос дважды если я уже дал на него ответ?

Цитата Сообщение от locm Посмотреть сообщение
Почему вы игнорируете описание функции?
Потому что в MSDN написано не полагаться на список возвращаемых значений в описании функций! Почему вы игнорируете этот факт? У вас есть возвращаемый тип и описано как с ним нужно работать, почему вы упираетесь? Там не какой-нибудь LSTATUS, а HRESULT.

Цитата Сообщение от locm Посмотреть сообщение
Код написан согласно описания функции. Что не так?
Посмотри как в MSDN работают с HRESULT кодами, там никогда не проверяют значение с S_OK, даже написано что так делать нельзя, даже если в описании будет написано что при успехе возвращается S_OK.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вы с Замабувараевым, как и в прошлый раз, когда не увидели элементарную ошибку в обработке строки, тоже пытались выкрутиться, но в итоге код изменили. Тут тоже не выйдет, крути не крути, а в MSDN написано всё конкретно
Не позорься, ошибку увидели, это ты не понял про что тебе писали и нес абсолютный бред про разделители. Даже когда тебе показали как в нормальных приложениях обрабатываются строковые значения, ты стал писать что это не наш стандарт и т.п. ерунду. Ты же для себя пишешь приложения. Что еще ожидать от человека который упирается и не хочет работать норально с юникодом? Я уже написал что есть такая категория людей кто тупо копипастит код и совершенно не думают как он работает.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Нет в описании больше ни каких "положительных статусов" кроме :
S_OK Operation successful
Ха-ха, не позорься, еще раз говорю . Ты прочитай что там написано.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Есть конкретное описание конкретной функции, и не надо сюда тащить то, без чего всё и так прекрасно работает.
И пока кодом мне не докажут обратное, я дискуссию прекращаю.
Да, есть конкретное описание того как работать с HRESULT и не нужно полагаться на возвращаемые значения перечисленные в описании функции. Все. Уже с MSDN тебе скинул код где показано что сравнивать с S_OK неправильно. Другого не дам.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Да всё вроде так. Тут наверное зависит от уровня взаимодействия, если прогер хочет
обработать все эти ошибки. Хотя по факту если функция не выполнилась, то вопрос "почему"
интересует лишь прогера для отладочных целей.
Тут вопрос не в том что функция не выполнилась, а в том что выполнилась. HRESULT это статус не только ошибок, но и успешных вызовов! В MSDN написано, не полагайтесь на список возвращаемых значений описанных в документации на функцию, используйте макросы FAILED и SUCCEEDED. Я не понимаю, почему вы отрицаете это? Вот конкретно можете по этому факту что-то сказать? Не тебе лично вопрос, а вам всем.

Вы пишете что в описании функции написано что при успехе возвращается S_OK, при ошибке один из кодов ошибок. S_OK - это один из кодов который перечислен в описании, а в MSDN написано что список этот неполный и любая функция может вернуть вообще любой HRESULT. Для определения того успешен вызов или нет нужно использовать макросы. Кто-то будет с этим спорить? Почему вы такие трудные?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Всмысле "извлекутся"? Есть условие. Оно не выполнится если значение будет не такое.
Он же чётко прописал значение, там нет разночтений. Извлекутся, наверное, если вообще
забить на эти проверки.
В прямом смысле извлекутся. Они могут извлечься а HRESULT может вернуть одно из 2-х миллиардов кодов успеха.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
А смену документаций и функционала мы уже видели, нет ничего хорошего всё херится сразу.
И на PB такое было и на FB. Старые коды хрен откомпилируешь когда что-то меняют.
В принципе это привычно уже, что тестить надо на тех ОС-как которые нужны. Всё чтобы охватить
нужно сильно запариваться.
Потому что нужно писать правильно! Для чего вам даются типы? Просто так что-ли? Вам показано как правильно работать с типом и явно оговаривается как и что. Если кто-то продолжает игнорировать и говнокодить то это исключительно его проблема что его код не будет потом где-то работать.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Да в принципе нетрудно писать.
Вот именно. Я не понимаю зачем упираться и игнорировать это.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Один фиг на самом деле. Просто так и не понял чем косячен конкретный код программера
и почему он не будет работать. Вроде по коду всё нормально и функция документирована.
Просто так если рассуждать мол завтра грянет гром, да что угодно может случиться.
Почитай все сообщения сначала от меня в этой теме, я уже 2 раза описывал этот момент.

Добавлено через 18 минут
Цитата Сообщение от Замабувараев Посмотреть сообщение
Посмотрите ещё на это
https://docs.microsoft.com/en-... dfrom=MSDN
О чем ты говоришь? Человек даже не в состоянии прочитать то на что сам ссылку дал
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.05.2021, 09:38
Цитата Сообщение от The trick Посмотреть сообщение
Не тебе лично вопрос, а вам всем.
Я вот использую в своих программах несколько успешных HRESULT.
При запуске асинхронной операции чтения мой интерфейс IHttpReader может вернуть S_OK, S_FALSE, HTTPREADER_S_IO_PENDING.
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.05.2021, 09:49
И последний факт того что нужно проверять значение через макросы FAILED и SUCCEEDED. Так делает сам Microsoft. Если посмотреть утилиту MGADiag, то можно найти такой код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  if ( hr < 0
    || (!CheckBuild(v7) ? (hr = pfnSLIsGenuineLocal(&pAppId, &pGenuineState, 0)) : (hr = pfnSLIsGenuineLocal2(
                                                                                           &pAppId,
                                                                                           &pGenuineState,
                                                                                           v5)),
        Log("1BC0EFCD", 201, hr, 0),
        hr < 0) )
  {
LABEL_21:
    *a2 = '3';
  }
  else if ( pGenuineState )
  {
    *a2 = pGenuineState + '1';
  }
  else
  {
    *a2 = 0;
  }
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.05.2021, 09:54
Я на фрибесике сделал так:
PureBasic
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
#include once "windows.bi"
 
Const GENUINE_SUCCESS_CAPTION = __TEXT("Успех")
Const GENUINE_SUCCESS = __TEXT("Ваша Windows считается подлинной")
Const GENUINE_FAILURE = __TEXT("Ваша Windows не прошла проверку подлинности")
  
Type SLID As GUID
 
#ifndef DEFINE_SLID
#define DEFINE_SLID(n, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) Extern n Alias #n As Const SLID : _ 
    Dim n As Const SLID = Type(l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8})
#endif
 
' {55C92734-D682-4D71-983E-D6EC3F16059F}
DEFINE_SLID(WINDOWS_SLID, _
    &h55C92734, &hD682, &h4D71, &h98, &h3E, &hD6, &hEC, &h3F, &h16, &h05, &h9F _
)
 
Type _SL_GENUINE_STATE As Long
 
Enum
    SL_GEN_STATE_IS_GENUINE = 0
    SL_GEN_STATE_INVALID_LICENSE
    SL_GEN_STATE_TAMPERED
    SL_GEN_STATE_OFFLINE
    SL_GEN_STATE_LAST
End Enum
 
Type SL_GENUINE_STATE As _SL_GENUINE_STATE
 
Declare Function SLIsGenuineLocalEx Alias "SLIsGenuineLocalEx"( _
    ByVal pAppId As Const SLID Ptr, _
    ByVal pSkuId As Const SLID Ptr, _
    ByVal pGenuineState As SL_GENUINE_STATE Ptr _
)As HRESULT
 
Sub ENTRYPOINT()
    
    Dim GenuineState As SL_GENUINE_STATE = Any
    Dim hrGenuineLocal As HRESULT = SLIsGenuineLocalEx( _
        @WINDOWS_SLID, _
        NULL, _
        @GenuineState _
    )
    
    If FAILED(hrGenuineLocal) Then
        ExitProcess(1)
    End If
    
    Select Case GenuineState
        
        Case SL_GEN_STATE_IS_GENUINE
            MessageBox(NULL, StrPtr(GENUINE_SUCCESS), StrPtr(GENUINE_SUCCESS_CAPTION), MB_OK Or MB_ICONINFORMATION)
            
        Case Else
            MessageBox(NULL, StrPtr(GENUINE_SUCCESS), NULL, MB_OK Or MB_ICONERROR)
            
    End Select
    
    ExitProcess(0)
    
End Sub
0
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,404
Записей в блоге: 7
02.05.2021, 12:16
Цитата Сообщение от The trick Посмотреть сообщение
Зачем задавать один и тот же вопрос дважды если я уже дал на него ответ?
Где?

Цитата Сообщение от The trick Посмотреть сообщение
Потому что в MSDN написано не полагаться на список возвращаемых значений в описании функций!
То есть MS сам себе противоречит?
По моему в описании функции четко написано какой результат считать успешным и код Pro_grammerа написан согласно документации. Остальное ваши придирки. Можете доказать на практике (в виде кода) что код Pro_grammerа неверен и может выполняется неправильно? Если нет, то о чем вообще этот пустой спор?

Цитата Сообщение от The trick Посмотреть сообщение
У вас есть возвращаемый тип и описано как с ним нужно работать, почему вы упираетесь?
В описании функции сказано какой ответ считать верным. Почему вы его игнорируете?
Напишите конкретно в случае SLIsGenuineLocalEx что даст замена S_OK на SUCCEEDED? Код будет работать не также?

Цитата Сообщение от The trick Посмотреть сообщение
И последний факт того что нужно проверять значение через макросы FAILED и SUCCEEDED. Так делает сам Microsoft. Если посмотреть утилиту MGADiag, то можно найти такой код
В какой строке используется SUCCEEDED или FAILED?
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.05.2021, 12:42
Цитата Сообщение от locm Посмотреть сообщение
Где?
Тут.

Цитата Сообщение от locm Посмотреть сообщение
То есть MS сам себе противоречит?
По моему в описании функции четко написано какой результат считать успешным и код Pro_grammerа написан согласно документации. Остальное ваши придирки. Можете доказать на практике (в виде кода) что код Pro_grammerа неверен и может выполняется неправильно? Если нет, то о чем вообще этот пустой спор?
Не противоречит. В описании обработки ошибок написано что считать успешным и как правильно обрабатывать значения HRESULT. Я уже доказал приведя информацию с MSDN. Как ты это прокомментируешь? Не нужно уходить опять от ответа или отвечать что-то другое, ответь на этот вопрос.

Цитата Сообщение от locm Посмотреть сообщение
В описании функции сказано какой ответ считать верным. Почему вы его игнорируете?
Потому что так описано в MSDN. Ты тоже читать не умеешь? Сколько раз еще привести цитату из MSDN чтобы до вас дошло? Зачем вы спорите с официальной документацией?

Цитата Сообщение от locm Посмотреть сообщение
Напишите конкретно в случае SLIsGenuineLocalEx что даст замена S_OK на SUCCEEDED? Код будет работать не также?
Не также, посмотри что делает макрос SUCCEEDED.

Цитата Сообщение от locm Посмотреть сообщение
В какой строке используется SUCCEEDED или FAILED?
Там где hr < 0. Это макрос FAILED.

Добавлено через 10 минут
Вот еще код из системной библиотеки sppcomapi.dll:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
HRESULT __stdcall CLicensingStateTools::get_IsGenuineComponent(CLicensingStateTools *this, SLID *pAppId, VARIANT_BOOL *pRet)
{
  HRESULT result; // eax
 
  if ( !pAppId )
    return E_INVALIDARG;
  if ( !pRet )
    return E_INVALIDARG;
  result = SLIsGenuineLocal(pAppId, (SL_GENUINE_STATE *)&pAppId, 0);
  if ( result >= 0 )
    *pRet = (pAppId != 0) - 1;
  return result;
}
Продолжайте дальше упираться

Добавлено через 4 минуты
Вот еще код:
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
struct _GUID *__stdcall myProductGetGenuineStatus(struct CSppWmiClassFactoryInstanceCache *a1, SL_GENUINE_STATE pGenuineState, struct _GUID *a3, unsigned int *a4, unsigned __int8 **a5)
{
  unsigned __int8 *v5; // esi
  char v7; // [esp+8h] [ebp-Ch]
  SLID *pAppId; // [esp+Ch] [ebp-8h]
  int v9; // [esp+10h] [ebp-4h]
 
  pAppId = 0;
  v9 = 0;
  a3 = (struct _GUID *)SLGetSLIDList(pGenuineState, 1, a3, 0, &v7, &pAppId);
  if ( (signed int)a3 >= 0 )
  {
    a3 = (struct _GUID *)SLIsGenuineLocal(pAppId, &pGenuineState, 0);
    if ( (signed int)a3 >= 0 )
    {
      v5 = (unsigned __int8 *)LocalAlloc(0x40u, 4u);
      SP<unsigned long,SP_SLC<unsigned long>>::Reset(&v9);
      v9 = 0;
      if ( v5 )
      {
        *(_DWORD *)v5 = pGenuineState;
        *a5 = v5;
        *a4 = 4;
        goto LABEL_8;
      }
      a3 = (struct _GUID *)E_OUTOFMEMORY;
    }
  }
  if ( WPP_GLOBAL_Control != &WPP_GLOBAL_Control && *((_BYTE *)WPP_GLOBAL_Control + 60) & 2 )
    WPP_SF_d(*((_QWORD *)WPP_GLOBAL_Control + 6), 0x17u, &stru_6FD2F0C, (char)a3);
LABEL_8:
  SP<unsigned long,SP_SLC<unsigned long>>::Reset(&v9);
  SP<unsigned long,SP_SLC<unsigned long>>::Reset(&pAppId);
  return a3;
}
Что-то нигде не вижу == 0, везде >=0, прямо как в SUCCEEDED
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2021, 15:03
Цитата Сообщение от The trick Посмотреть сообщение
HRESULT это статус не только ошибок, но и успешных вызовов!
Ну как-бы в курсе этого. Просто тут какое-то странное обсуждение. Не понимаю где конкретно
налажал программер и почему его код не будет работать. Есть тип, у него есть область значений,
они документированы и более того описаны в MSDN для каждой API функции.
Программер посмотрел описание функции и скодил свой пример согласно доке.
Ты говоришь что он что-то сделал не так. Вот и пытаюсь понять, что у него не так в коде.

А про эти макросы там написано что оно нужно для COM. Но где тут COM? Обычная WinAPI функция.
Probably 99% of COM methods return S_OK when they succeed
Вот первый макрос:
#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
Т.е. IF hr >= 0 THEN SUCCEEDED = TRUE

Вот второй:
#define FAILED(hr) (((HRESULT)(hr)) < 0)
Т.е. IF hr < 0 THEN FAILED = TRUE

Вот табличка эта
Детали формата
Bit 31 30 29 28 27
26 25 24 23 22 21 20 19 18 17 16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Field S R C N X
Facility
Code

S - Severity - indicates success/fail
0 - Success
1 - Failure
R - Reserved portion of the facility code, corresponds to NT's second severity bit.
1 - Severe Failure
C - Customer. This bit specifies if the value is customer-defined or Microsoft-defined.
0 - Microsoft-defined
1 - Customer-defined
N - Reserved portion of the facility code. Used to indicate a mapped NT status value.
X - Reserved portion of the facility code. Reserved for internal use. Used to indicate HRESULT values that are not status values, but are instead message ids for display strings.
Facility - indicates the system service that is responsible for the error. Example facility codes are shown below (for the full list see [2]).
1 - RPC
2 - Dispatch (COM dispatch)
3 - Storage (OLE storage)
4 - ITF (COM/OLE Interface management)
7 - Win32 (raw Win32 error codes)
8 - Windows
9 - SSPI
10 - Control
11 - CERT (Client or server certificate)
...
Code - is the facility's status code


И если так подумать, выглядит так, как будто в COM какие-то проблемы(раз они о нём написали).
Всмысле про 1 процент этот мифический.
Мол где-то 1 процент функций, которые забивают на эту структуру(на Severity бит) и
теперь что-то хотят исправить. Или в документации где-то косяк...
Сами небось не знают уже где чего накуролесили. Вот и решили подстраховаться.
И ещё хуже, если это говно как раз со стороны реализации(пробелы на разных системах).

Как-то странно это всё. Ну т.е. FAILED то можно, наверное, делать, для собственного спокойствия.
Хотя это ещё надо покурить зачем вместо одного конкретного документированного значения мы берём
целый диапазон и надо ли оно вообще в контексте той или иной функции. Выглядит как попытка
объять необъятное, захендлить и обработать всё, или использовать больше факторов(поле code).
Просто для себя лишний раз сделал вывод, что надо тестировать и тестировать. И все эти теоретизирования
как бы тоже не особо помогут если вдруг, где-то болтается целый процент косячных функций,
написанный криворукими ребятами. Майкры в последнее время стали особенно криворукие.
По оптимизации винд прекрасно видно.


Цитата Сообщение от The trick Посмотреть сообщение
В прямом смысле извлекутся.
Ну как бы про то речь вёл, что код не пойдёт дальше. Если функция вернёт ошибку - она очевидно
ничего не сделает. Для этого результы и нужны, чтобы понимать функция сделала что надо или нет.
А если функция сделала, а результ вернулся неверный, то это проблема уже не программиста.
Всё, что может сделать программист - это соответствовать документации.
А программер ей соответствовал. Тут нет противоречия. Но оно наверное будет, если
этот самый Severity бит будет кривой, а в MSDN-е будет указано, что оно мол должно срабатывать.
Т.к. это тоже MSDN и оффдока: https://docs.microsoft.com/en-... dfrom=MSDN
1
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,404
Записей в блоге: 7
02.05.2021, 16:17
Цитата Сообщение от The trick Посмотреть сообщение
Я уже доказал приведя информацию с MSDN. Как ты это прокомментируешь?
Я тоже доказал дав ссылку на описание функции, где написано какой результат считать успешным. Код написан верно и он будет работать правильно, остальное ваши придирки.

Цитата Сообщение от The trick Посмотреть сообщение
Потому что так описано в MSDN.
В описании функции нет ничего о том что нужно интерпретировать результат как-то иначе. Код написан правильно и он будет правильно работать. Если вы нашли ошибку в коде из-за которого он будет работать неправильно, укажите на нее, иначе вы просто придираетесь.

Цитата Сообщение от The trick Посмотреть сообщение
Там где hr < 0. Это макрос FAILED.
То есть об этом нужно было догадаться? Даже в комментариях это не указали! Ваш код не соответствует описанию функции и в этом плане он намного хуже.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Не понимаю где конкретно
налажал программер и почему его код не будет работать.
Нет никаких ошибок и код написан согласно документации. Просто The trick и Замабувараев пишут что "зеленый цвет RGB(0, 255, 0) недостаточно зеленый".
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
02.05.2021, 16:57
Цитата Сообщение от locm Посмотреть сообщение
Просто The trick и Замабувараев пишут что "зеленый цвет RGB(0, 255, 0) недостаточно зеленый".
Интересно, что в словах
Цитата Сообщение от MSDN
99% методов COM возвращают S_OK, когда они успешны; но не позволяйте этому факту вводить вас в заблуждение.
может быть непонятного?
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.05.2021, 20:56
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ты говоришь что он что-то сделал не так. Вот и пытаюсь понять, что у него не так в коде.
Я уже (и не только я) написали в чем проблема.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
А про эти макросы там написано что оно нужно для COM. Но где тут COM? Обычная WinAPI функция.
А в COM не обычные API функции?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
И если так подумать, выглядит так, как будто в COM какие-то проблемы(раз они о нём написали).
Всмысле про 1 процент этот мифический.
Мол где-то 1 процент функций, которые забивают на эту структуру(на Severity бит) и
теперь что-то хотят исправить. Или в документации где-то косяк...
Сами небось не знают уже где чего накуролесили. Вот и решили подстраховаться.
И ещё хуже, если это говно как раз со стороны реализации(пробелы на разных системах).
Ты совершенно не понял в чем смысл HRESULT. Нет никаких косяков в документации. Тебе дана структура в которой каждое поле занимает определенное количество бит (битовые поля). Каждое поле отображает определенную информацию. Для тестирования успешности вызова тестируется поле Severity. Все. Никаких проблем нет.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Как-то странно это всё. Ну т.е. FAILED то можно, наверное, делать, для собственного спокойствия.
Хотя это ещё надо покурить зачем вместо одного конкретного документированного значения мы берём
целый диапазон и надо ли оно вообще в контексте той или иной функции. Выглядит как попытка
объять необъятное, захендлить и обработать всё, или использовать больше факторов(поле code).
Просто для себя лишний раз сделал вывод, что надо тестировать и тестировать. И все эти теоретизирования
как бы тоже не особо помогут если вдруг, где-то болтается целый процент косячных функций,
написанный криворукими ребятами. Майкры в последнее время стали особенно криворукие.
По оптимизации винд прекрасно видно.
Ничего странного, данная концепция разработана очень давно и никакого отношения не имеет к тому о чем ты сейчас написал. Как раз-таки сравнивать HRESULT с S_OK неправильно, что и описано в доке.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ну как бы про то речь вёл, что код не пойдёт дальше. Если функция вернёт ошибку - она очевидно
ничего не сделает.
Ну и? Что ты этим хочешь сказать? Я тебе пишу что будет делать код программера если вернется успешный статус? Ответь конкретно. Если Severity в результате будет сброшен, что будет делать функция программера? Она как-нибудь тестирует этот бит? Ответь на этот вопрос.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Всё, что может сделать программист - это соответствовать документации.
А программер ей соответствовал. Тут нет противоречия. Но оно наверное будет, если
этот самый Severity бит будет кривой, а в MSDN-е будет указано, что оно мол должно срабатывать.
Т.к. это тоже MSDN и оффдока: https://docs.microsoft.com/en-... dfrom=MSDN
Ничего там не соответствует. В доке написано что возвращаться может вообще любой статус а не только те что описаны в доке на функцию. Все.

Цитата Сообщение от locm Посмотреть сообщение
Я тоже доказал дав ссылку на описание функции, где написано какой результат считать успешным. Код написан верно и он будет работать правильно, остальное ваши придирки.
Ничего ты не доказал. Ты никак не опроверг того факта что в MSDN описано то что статус может возвратиться любой, а не только тот что описан в описании функции.

Цитата Сообщение от locm Посмотреть сообщение
В описании функции нет ничего о том что нужно интерпретировать результат как-то иначе. Код написан правильно и он будет правильно работать. Если вы нашли ошибку в коде из-за которого он будет работать неправильно, укажите на нее, иначе вы просто придираетесь.
Уже указал. В описании функции и не должно быть исчерпывающего списка возвращаемых статусов, о чем в MSDN прямо и написано. Также написано что сравнение с S_OK неверно. Что, по новому кругу пойдем?

Цитата Сообщение от locm Посмотреть сообщение
То есть об этом нужно было догадаться? Даже в комментариях это не указали! Ваш код не соответствует описанию функции и в этом плане он намного хуже.
Лол. Это не мой код, это декомпиль кода системных библиотек, т.е. самый что ни на есть официальный источник. Вы тут спрашивали у меня как правильно обрабатывать вызов - вам скинул код. Будете еще над этим спорить? Ок, давайте.

Цитата Сообщение от locm Посмотреть сообщение
Нет никаких ошибок и код написан согласно документации.
Есть ошибка.

Добавлено через 7 минут
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Есть тип, у него есть область значений,
они документированы и более того описаны в MSDN для каждой API функции.
Так вот в MSDN также написано:
MSDN documentation often gives a list of specific error codes that a method might return. However, you should not consider these lists to be definitive. A method can always return an HRESULT value that is not listed in the documentation. Again, use the SUCCEEDED and FAILED macros.
Почему вы упорно не хотите прокомментировать этот факт?
0
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,404
Записей в блоге: 7
02.05.2021, 21:32
Цитата Сообщение от The trick Посмотреть сообщение
Ты никак не опроверг того факта что в MSDN описано то что статус может возвратиться любой, а не только тот что описан в описании функции.
Докажите это в виде кода. Чтобы запустить и увидеть результат успешного выполнения SLIsGenuineLocalEx, но при этом чтобы результат был бы не S_OK.

Цитата Сообщение от The trick Посмотреть сообщение
В описании функции и не должно быть исчерпывающего списка возвращаемых статусов, о чем в MSDN прямо и написано. Также написано что сравнение с S_OK неверно.
Повторюсь, в какой ситуации выполнение SLIsGenuineLocalEx будет успешным, но результат будет отличаться от S_OK? Нужен пример кода чтобы это увидеть. Иначе вы просто придираетесь без реальных оснований.

Цитата Сообщение от The trick Посмотреть сообщение
Что, по новому кругу пойдем?
Вы только пишите, но реальных примеров кода с SLIsGenuineLocalEx до сих пор не привели.
Давайте по существу, с примерами, иначе это просто слова.

Цитата Сообщение от The trick Посмотреть сообщение
Есть ошибка.
Код выполняется неправильно? Если нет, приведите пример когда вызов LIsGenuineLocalEx будет успешным, но результат будет отличаться от S_OK.

Цитата Сообщение от The trick Посмотреть сообщение
Так вот в MSDN также написано
Мы обсуждаем конкретную функцию, а не "какую-то".

Цитата Сообщение от The trick Посмотреть сообщение
Почему вы упорно не хотите прокомментировать этот факт?
А что тут комментировать? Код в первом сообщении написан согласно документации и выполняется без ошибок.
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.05.2021, 21:52
Цитата Сообщение от locm Посмотреть сообщение
Докажите это в виде кода. Чтобы запустить и увидеть результат успешного выполнения SLIsGenuineLocalEx, но при этом чтобы результат был бы не S_OK.
Зачем мне доказывать то что описано в MSDN? Я не спорю с официальной документацией в отличии от вас. Я просто следую тому как того требует документация и сами майкры следуют этому. Зачем мне идти против как вы?

Цитата Сообщение от locm Посмотреть сообщение
Повторюсь, в какой ситуации выполнение SLIsGenuineLocalEx будет успешным, но результат будет отличаться от S_OK? Нужен пример кода чтобы это увидеть. Иначе вы просто придираетесь без реальных оснований.
В любой. В совершенно любой ситуации результат может быть успешным и не возвращать S_OK. Устроит такой ответ?

Цитата Сообщение от locm Посмотреть сообщение
Вы только пишите, но реальных примеров кода с SLIsGenuineLocalEx до сих пор не привели.
Какой ты код все ждешь от меня? Я пишу то о чем написано в официальной доке, а ты все пытаешься с меня какой-то код выудить.

Цитата Сообщение от locm Посмотреть сообщение
Код выполняется неправильно? Если нет, приведите пример когда вызов LIsGenuineLocalEx будет успешным, но результат будет отличаться от S_OK.
Код не выполняется неправильно, код написан неправильно.

Цитата Сообщение от locm Посмотреть сообщение
Мы обсуждаем конкретную функцию, а не "какую-то".
Что? А LIsGenuineLocalEx это не какая-то функция?

Цитата Сообщение от locm Посмотреть сообщение
А что тут комментировать? Код в первом сообщении написан согласно документации и выполняется без ошибок.
А при чем тут код в первом сообщении? Ты прокомментируй ту цитату из MSDN, зачем опять уходить от ответа, ну ё-маё? Или просто ответить нечего?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2021, 21:52
У меня тогда очень простой вопрос.

Если оф. документация сама говорит, что вводит людей в заблуждение. А т.е.:
Цитата Сообщение от Замабувараев Посмотреть сообщение
99% методов COM возвращают S_OK, когда они успешны; но не позволяйте этому факту вводить вас в заблуждение.
то почему ребята из Microsoft старательно оставляют такие штуки и не правят документацию?
Почему эта истина о 1% кривых функций зарыта где-то мелкой фразочкой, а тысячах функций
столь важная(с твоих слов) деталь не указана?

Return value
If the method succeeds, it returns S_OK.

If the method fails, it returns an error code. For a list of common error codes, see Common HRESULT Values.
И у меня к программеру нет претензий и не будет. Он отработал чётко по документации.
А вот к ребятам из Microsoft претензии есть за столь кривую, уродскую доку.

И да мы так и не увидели 1% функций, человек там заикнулся. Сказал A пусть говорит B.
Или они сами не знают где у них писали криворучки?
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.05.2021, 22:09
Цитата Сообщение от Quiet Snow Посмотреть сообщение
то почему ребята из Microsoft старательно оставляют такие штуки и не правят документацию?
А что они должны делать? Давать для каждой функции огромедный список кодов которые она реально может возвратить? А что если в будущем какие-то коды добавятся? Править всю документацию? Они как раз-таки и поступили логично, дали вам тип который олицетворяет статус вызова и досконально описали его поведение. Если человек не изучает того с чем работает - это его проблемы. Я вообще не понимаю в чем тут может быть проблема. Когда я вижу какой-то незнакомый мне тип данных, я всегда смотрю что он обозначает и как с ним работать и у меня не возникает никогда таких проблем.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Почему эта истина о 1% кривых функций зарыта где-то мелкой фразочкой, а тысячах функций столь важная(с твоих слов) деталь не указана?
Почему они "кривые"? Эта деталь указана в описании к типу c которым ты работаешь.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
И у меня к программеру нет претензий и не будет. Он отработал чётко по документации.
А вот к ребятам из Microsoft претензии есть за столь кривую, уродскую доку.
Да неудивительно так-то, вы тут будете "глотку грызть" друг за друга даже если кто-то будет откровенный бред нести.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
02.05.2021, 23:05
Цитата Сообщение от The trick Посмотреть сообщение
Да неудивительно так-то, вы тут будете "глотку грызть" друг за друга даже если кто-то будет откровенный бред нести.
При чём тут глотку грызть, дока кривая, ты это отрицаешь, а виноват Pro_grammer.

И я тебе даже объясню почему она кривая. Тебе дали описание функции и ты пишешь:

Цитата Сообщение от The trick Посмотреть сообщение
Нет никаких косяков в документации.
и дальше
Цитата Сообщение от The trick Посмотреть сообщение
Ничего там не соответствует.
Всё, с этого момента она кривая. Когда одно другому начинает противоречить.
Прогер не должен гадать чего там функция возвращает и как её может колбаснуть в плане резалта
и не должен гадать где лежит ещё дополнительная документация, о которой в описании функции явно не сказано.
Особенно функция, которая простые вещи возвращает, отвечая на вопрос да, либо нет.

И что значит:
Цитата Сообщение от The trick Посмотреть сообщение
А что если в будущем какие-то коды добавятся?
Добавятся и хрен с ними, мы с ними не работаем, их не проверяем. Поведение программы не изменится,
если не изменится поведение системы. Я уже писал про обратную совместимость. Если людям хотят
доставить реальных геморов тебя не спасут никакие документации.

Добавлено через 58 секунд
Цитата Сообщение от The trick Посмотреть сообщение
А что они должны делать?
Указать в документации в каждой функции в разделе возвращаемого значения ссылку на
корректное и убрать некорректное, если оно является таковым.
0
Эксперт по электронике
7233 / 3412 / 347
Регистрация: 28.10.2011
Сообщений: 13,404
Записей в блоге: 7
02.05.2021, 23:33
Цитата Сообщение от The trick Посмотреть сообщение
Я не спорю с официальной документацией в отличии от вас.
Вы предлагаете не следовать официальной документации где написано.
If the method succeeds, it returns S_OK.

If the method fails, it returns an error code. For a list of common error codes, see Common HRES
Цитата Сообщение от The trick Посмотреть сообщение
В любой. В совершенно любой ситуации результат может быть успешным и не возвращать S_OK. Устроит такой ответ?
Этот ответ противоречит описанию функции (см. выше), так что не устроит.
Хватит рассуждать. Покажите на примере в каком случае выполнение SLIsGenuineLocalEx будет успешным, но результат будет отличаться от S_OK, иначе не вижу смысла вашего спора. Если у вас нет ответа на этот вопрос, давайте прекратим бессмысленный спор.

Цитата Сообщение от The trick Посмотреть сообщение
Код не выполняется неправильно, код написан неправильно.
Он написан согласно описания функции. Если вы считаете что оно неправильное, обращайтесь в майкрософт.

Цитата Сообщение от The trick Посмотреть сообщение
А LIsGenuineLocalEx это не какая-то функция?
У каждой функции есть описание и LIsGenuineLocalEx не исключение. Вы читали ее описание? Особенно в части того что возвращает функция?

Цитата Сообщение от The trick Посмотреть сообщение
А при чем тут код в первом сообщении?
Разве мы не его обсуждаем?

Цитата Сообщение от The trick Посмотреть сообщение
Ты прокомментируй ту цитату из MSDN
В описании функции нет ничего про то что следует использовать SUCCEEDED или FAILED, но приведены коды возврата. Поэтому описание функции в большем приоритете.

Цитата Сообщение от The trick Посмотреть сообщение
Давать для каждой функции огромедный список кодов которые она реально может возвратить?
В описании перечислены коды которые может вернуть LIsGenuineLocalEx.

Цитата Сообщение от The trick Посмотреть сообщение
А что если в будущем какие-то коды добавятся?
Для LIsGenuineLocalEx крайне маловероятно что добавятся коды сообщающие об успешном выполнении. А если появятся новые коды ошибок, это не повлияет на работу программы.

Цитата Сообщение от The trick Посмотреть сообщение
Править всю документацию?
Почему всю? Только описание тех функций что были изменены.
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
03.05.2021, 00:28
Цитата Сообщение от The trick Посмотреть сообщение
Давать для каждой функции огромедный список кодов которые она реально может возвратить?
Почему сделан вывод, что она физически может их возвратить, что в ней это всё есть?
Довольно сложно представить себе под пяток тысяч функций, каждая из которых содержит в себе
отработку возврата значения из огроменного списка. Тут просто не надо притягивать за уши
всё что слышишь и читаешь. Огроменный список нужен для отладочных целей, он для всего
функционала и для разного спектра ошибок, а не для конкретной функции.
И программисту он не нужен весь и сразу. Ты его не запомнишь весь. Как и все функции из MSDN.
Это, попросту, нереально. Для рабочих нужд там всего несколько значений и они описаны
в небольшой табличке. Функция ничего кроме них не выдаёт(не должна), а если выдаёт,
это должно быть описано в документации. Иначе человек об этом не узнает.
А я бы хотел знать, что строго оговоренная функция точно допускает возвратить, т.к. от этого напрямую
зависит работа программы. И у Pro_grammer-a прога работает по описанию функции.
А когда мне говорят, что функция может что-то там вернуть и нигде это не написано,
кроме как в "огроменном" списке, то это дерьмо, а не документация, реально дерьмо. Потому что это фарс
и простые функции не содержат в себе данный функционал. Это просто очевидно, здравый смысл.
В кодинге здравый смысл очень даже нужен, а не слепое следование любой доступной документации.
И объяснения очень даже нужны. Это про того персонажа, который написал что есть какой-то 1%
но не указал точно. Тут сразу складывается ощущение что до публикации в MSDN допустили
какого-то левого тюфяка который внёс сумбур, скомпрометировав документацию и
не смог нормально описать всю эту ситуацию.

Цитата Сообщение от The trick Посмотреть сообщение
А в COM не обычные API функции?
Им не пользуюсь, но речь шла, видимо, именно о нём, родимом, о том что где-то там имеются эти самые
пробелы с S_OK.
Лично не видел ещё функции, которые работали бы не так, как написано в описании.

И по поводу прокомментировать то или это. Почитал бы как сами Microsoft прокомментируют
по поводу возвращемых значений API без использования COM. Подтвердили бы они этот свой
1% функций или нет. Просто это достаточно весело.

На самом деле готов принять любое нормальное объяснение, но не "тупо делай так потому что так надо".
Если процесс не объяснён нормально, то один фиг какой документации следовать.

Логичные объяснения выглядели бы так:
- HRESULT всегда является продуктом не состояний, а битовых полей.
или
- HRESULT всегда является продуктом состояний, битовые поля представлены для каталогизации
состояний и получения доп информации о них.

А "справка функции" говорит одно, а "дополнительная дока", противоречащая ей говорит другое,
простите - это не дока, а дичь какая-то, говорю как есть.
И тут не канает сказать "чувак ты не разобрался", я вон выше как раз полез и посмотрел и
макросы и табличку. Они слабо объясняют то, про что написано чуть выше. Как и никаких слов
про реализации, мы лишь косвенно можем что-то уловить по битовым полям.
Но как формирует каждая конкретная функция эти значения не указано(если верить этим тезисам про FAILED).
А ту гребёнку из тысяч резалтов изучать - бошкой двинешься.
По исходникам выше сложно сказать, ну да там проверяется этот самый бит, но на остальные забивается.

Искать какую-то логику в нелогичности это блин мы дожили.
0
 Аватар для Pro_grammer
6807 / 2840 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.05.2021, 09:07  [ТС]
Цитата Сообщение от Замабувараев Посмотреть сообщение
Я на фрибесике сделал так
Не работает:
...\Compilier\fbc -s gui "GENUINE.bas"
GENUINE.o:fake: (.text+0x12) : undefined reference to `SLIsGenuineLocalEx@12'
Добавлено через 29 минут
Но даже если бы и случилось чудо, и я его смог бы скомпилировать.
Где у тебя ошибка:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
DIM hrGenuineLocal AS HRESULT = SLIsGenuineLocalEx( _
        @WINDOWS_SLID, _
        NULL, _
        @GenuineState _
    )
    
    IF FAILED(hrGenuineLocal) THEN
        ExitProcess(1)
    END IF
В этом коде идёт проверка на FAILED. Но по твоим же заявлениям, и по описанию HRESULT
S_FALSE &h00000001 Функция отработала успешно и возвращает логическую ложь.
Т.о. если вдруг hrGenuineLocal = 1, то твоя программа считает, что это успех и продолжится!
А что лежит в этот момент в GenuineState непонятно, т.к. читаем доки:
Указатель на значение перечисления SL_GENUINE_STATE, которое указывает состояние установки. Эта функция не изменяет значение этого параметра, если возвращаемое значение - любое значение, отличное от S_OK.

Переведу для вас с The trick ещё раз. Ни какие другие значения HRESULT кроме S_OK не имеют смысла
потому что
pGenuineState

A pointer to a value of the SL_GENUINE_STATE enumeration that specifies the state of the installation. This function does not change the value of this parameter if the return value is any value other than S_OK.
Я понятно излагаю?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.05.2021, 10:40
Цитата Сообщение от Pro_grammer Посмотреть сообщение
undefined reference to `SLIsGenuineLocalEx@12'
Что? 32‐бит?! Ну ладно, объявим функцию без искажения:
PureBasic
1
2
3
4
5
6
7
8
9
Extern "Windows-MS"
 
Declare Function SLIsGenuineLocalEx Alias "SLIsGenuineLocalEx"( _
    ByVal pAppId As Const SLID Ptr, _
    ByVal pSkuId As Const SLID Ptr, _
    ByVal pGenuineState As SL_GENUINE_STATE Ptr _
)As HRESULT
 
End Extern
А ещё вам необходимо добавить ссылку на статическую библиотеку libsppc.dll.a, чтобы компоновщик знал как её вызывать.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
В этом коде идёт проверка на FAILED
Всё правильно. Если сработал FAILED, значит произошла ошибка и процесс завершается с кодом 1.
Если FAILED не сработал, значит ошибки нет, можно продолжать.
Цитата Сообщение от Pro_grammer Посмотреть сообщение
то твоя программа считает, что это успех и продолжится!
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Функция отработала успешно
Что может быть непонятного в слове «успешно»? Ноль и любое положительное число — это успех.
Вложения
Тип файла: zip Genuine.zip (6.7 Кб, 4 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2021, 10:40

Проверка на подлинность Windows 7 (не прошла) экран черный
как убить черный экран в семерке? в хр делала, а тут другое дело) муж вчера попробовал, сегодня с Вашей помощью еле комп реанимировала)...

Проверка на подлинность
Здравствуйте! У меня к вам просьба.Не мог бы кто-то помочь мне разобраться с одной очень интересной задачкой по Access? И решения у...

Проверка COOKIE на подлинность
Здравствуйте. Мне нужно проверить куки на подлинность, что пользователь действительно зарегистрирован $db = Db::getConnection(); ...

Проверка на подлинность домена
Доброго времени суток. У меня небольшой сайт и он шлет на vps сервер, всплыло что кто-то открыл другие домены и скорее всего простым...

Активация и проверка на подлинность
копия windows не прошла проверку на подлинностью. что это может быть?как его убрать чтоб оно больше не высвечивалось? а то поменяю тему а...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе. Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I Обработка содержит следующие. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru