Параметр InstallDate в Windows 7

 
0
 
C++
ava
tofreesky | 20.01.2013, 23:20
Данный код, который получает дату установки Windows, возвращает 0 всегда на моей Windows 7 x64, даже запуская с правами админа. На других ОС возвращает корректные данные.

Не подскажите в чем дело может быть?


long GetProcessorFrequency()
{
    HKEY hKey;
    DWORD cData=4;
    DWORD ProcessorFrequency;

    DWORD Res1=RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", NULL, KEY_QUERY_VALUE , &hKey);
    if(Res1==ERROR_SUCCESS)
    {
        DWORD Res2=RegQueryValueExA(hKey,"InstallDate", NULL, NULL, (LPBYTE)&ProcessorFrequency, &cData);
        if(Res2==ERROR_SUCCESS) return ProcessorFrequency;

        else
        {
            MessageBoxA(NULL,"RegQueryValueEx: Frequency","ERROR",MB_OK);
            return NULL;
        }
    }
    else
    {
        MessageBoxA(NULL,"RegOpenKeyEx: Frequency","ERROR",MB_OK);
        return NULL;
    }
}[quote]

[/quote]
Ответы (10)
ava
volatile | 20.01.2013, 23:50 #
а в реестре этот ключ есть?
ava
tofreesky | 21.01.2013, 00:03 #
Конечно есть
ava
feodorv | 21.01.2013, 07:57 #
Цитата (tofreesky @  21.1.2013,  01:03 findReferencedText)
Конечно есть 

А какое у него значение? Может, ноль и есть...
ava
tofreesky | 21.01.2013, 11:28 #
InstallDate = REG_DWORT (0x5070a7a3)
ava
volatile | 21.01.2013, 12:35 #
tofreesky, вы на других машинах с win x64 проверяли или другие были 32 разрядные?

ava
tofreesky | 21.01.2013, 13:02 #
На xp 32 бита, код отрабатывает нормально.
ava
volatile | 21.01.2013, 13:30 #
вероятно что-то с перенаправлением веток

SOFTWARE\Microsoft\Windows NT\..
в
SOFTWARE\WOW6432Node\Microsoft\Windows NT\...
или типо того...
в общем, врать не буду, не помню как там в x64, сорри.

ava
xvr | 21.01.2013, 15:49 #
Цитата (volatile @  21.1.2013,  13:30 findReferencedText)
вероятно что-то с перенаправлением веток

Скорее всего. 2ТС - откомпилите в 64х битном режиме
ava
feodorv | 21.01.2013, 19:03 #
Цитата (volatile @  21.1.2013,  14:30 findReferencedText)
не помню как там в x64, сорри

Как-то так  :russian_ru

Добавлено позднее:
Цитата (xvr @  21.1.2013,  16:49 findReferencedText)
откомпилите в 64х битном режиме

Или можно воспользоваться флагом KEY_WOW64_64KEY...
ava
tofreesky | 21.01.2013, 19:44 #
А универсальный код x86 приложения, который считывал бы значение и там и там? Помимо ветвления кода по условию текущей системы?

Добавлено позднее:
Хотя с флагом KEY_WOW64_64KEY работает на всех системах. Спасибо!)
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить