GETREG & Windows10x64

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Kromeshnik
Новичок
Сообщения: 18
Зарегистрирован: 27 Август 2012, 22:59

GETREG & Windows10x64

Сообщение Kromeshnik »

Clarion10.0.12327, Windows10x64
Прошу помощи...ситуация следующая, требуется получить, что у нас в 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
Пробуем получить:

Код: Выделить всё

MyQueue             QUEUE,PRE(my)
RegValues               STRING(255)
                          END
                   
GETREGVALUES(REG_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Run',MyQueue)    
LOOP I# = 1 TO RECORDS(MyQueue)
    GET(MyQueue,I#)
    MESSAGE(my:RegValues)
END
открываю regedit, смотрю...а неа, выдало, то, что у нас в 'HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run'
wow64...кто бы сомневался...ладно, делаю так:

Код: Выделить всё

IF Wow64DisableWow64FsRedirection. ! тут вызываю MSDN-функцию, отключаю перенаправление вов64
GETREGVALUES(REG_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Run',MyQueue)    
IF Wow64RevertWow64FsRedirection. ! возвращаю...
LOOP I# = 1 TO RECORDS(MyQueue)
    GET(MyQueue,I#)
    MESSAGE(my:RegValues)
END
а все равно хрена там...когда мне надо было копировать в system32 под wow64 - то функция Wow64DisableWow64FsRedirection спасала...а тут - нет.

Как обойти?
(GETREGVALUES(REG_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Run',MyQueue) - пашет норм, а эта GETREGVALUES(REG_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Run',MyQueue) - нет, точнее пашет, но выдает то, что сидит тут: 'HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run')
Запускаю из-под админа, пробовал и с манифестом и без...
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

GETREG & Windows10x64

Сообщение Алексей- Софт-Центр »

Добрый день!
WinX64 - реестры.pdf
(10.47 КБ) 195 скачиваний
переименуйте расширение в docx.
Можно попробовать с политикой юзера поиграться.

Алексей
Kromeshnik
Новичок
Сообщения: 18
Зарегистрирован: 27 Август 2012, 22:59

GETREG & Windows10x64

Сообщение Kromeshnik »

о, благодарю...а я хотел по-быренькому через Wow64DisableWow64FsRedirection, мда...
буду курить, еще раз спасибо!
Kromeshnik
Новичок
Сообщения: 18
Зарегистрирован: 27 Август 2012, 22:59

GETREG & Windows10x64

Сообщение Kromeshnik »

теперь пашет

Код: Выделить всё

MODULE('Advapi32')
  RegOpenKeyEx(ULONG,LONG,LONG,LONG,*LONG),long,RAW,pascal,name('RegOpenKeyExA')
  RegEnumValue(LONG,LONG,LONG,LONG,LONG,LONG,LONG,LONG),LONG,RAW,pascal,name('RegEnumValueA')
  RegCloseKey(long hKey),long,proc,pascal
END

hkCurrentReg          LONG
LOC:RegPath           CSTRING(1024)
LOC:StrValue          CSTRING(1024)
LOC:StrSize           LONG
LOC:DataValue         CSTRING(1024)
LOC:DAtaSize          LONG
LOC:DataType          LONG
KEY_READ           EQUATE(20019h)
KEY_WOW64_64KEY   EQUATE(0100h)

IF GLO:WinX64
    LOC:RegPath = 'Software\Microsoft\Windows\CurrentVersion\Run'
    result = RegOpenKeyEx(REG_LOCAL_MACHINE,ADDRESS(LOC:RegPath),0,KEY_READ + KEY_WOW64_64KEY,hkCurrentReg)         
    IF (~result AND hkCurrentReg)         
        i# = 0
        LOOP WHILE TRUE         
              LOC:StrSize = 1024
              LOC:DAtaSize = 1024
              result = RegEnumValue(hkCurrentReg, i#, ADDRESS(LOC:StrValue), ADDRESS(LOC:StrSize), 0, 0, ADDRESS(LOC:DataValue), ADDRESS(LOC:DAtaSize))
              !WriteToConsole('result= ' & result & ' LOC:StrValue= ' & CLIP(LOC:StrValue) & ' LOC:StrSize= ' & LOC:StrSize & ' LOC:DataValue= ' & LOC:DataValue & ' LOC:DAtaSize= ' & LOC:DAtaSize & '<13,10>')
              i# += 1
              IF result <> 0 
                 BREAK
              ELSE
                   !WriteToConsole('   ' & CLIP(LOC:StrValue) & '...' & CLIP(LOC:DataValue) & '<13,10>')
              END   
        END   
    END
    IF hkCurrentReg
        RegCloseKey(hkCurrentReg)
    END
END
kreator
✯ Ветеран ✯
Сообщения: 5004
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

GETREG & Windows10x64

Сообщение kreator »

А может правильно Windows перенаправляет? У меня в ветке реестра 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run' вообще ничего нет, в 'WOW6432Node' есть. Это дома, в понедельник ради принципа посмотрю на рабочем планшете - как там.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 5004
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 21 раз

GETREG & Windows10x64

Сообщение kreator »

На планшете 32-битная версия. Отбой. Кстати, сейчас в Win10 в диспетчере задач есть закладка "Автозагрузка". Там отображаются программы из 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'? Есть подозрение, эта ветка осталась для совместимости и не должна использоваться.
We are hard at work… for you. :)
Kromeshnik
Новичок
Сообщения: 18
Зарегистрирован: 27 Август 2012, 22:59

GETREG & Windows10x64

Сообщение Kromeshnik »

нет, что хотел я сделал :) там специфическая задача только под Win x64 для wow64, автоматизирую тестирование. Работает теперь правильно.
Ответить