Re[4]: Получение пути из хэндла
От: Holms США  
Дата: 25.05.05 17:51
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Все нормальные API экспортируют имена в стиле "C", чтобы не было проблем с разными компиляторами.

это было то что нужно. Спасибо
Только теперь у меня видимо лыжи не едут или ...
в итоге код такой

// testZwQueryKey.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>

typedef enum _KEY_INFORMATION_CLASS {
  KeyBasicInformation,
    KeyNodeInformation,
    KeyFullInformation,
    KeyNameInformation
} KEY_INFORMATION_CLASS;

typedef struct _KEY_BASIC_INFORMATION {
  LARGE_INTEGER LastWriteTime;
  ULONG TitleIndex;
  ULONG NameLength;
  WCHAR Name[1]; // Variable length string
} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
#define NTSTATUS DWORD

extern "C"{
NTSYSAPI
NTSTATUS
NTAPI
ZwQueryKey(
           IN HANDLE KeyHandle,
           IN KEY_INFORMATION_CLASS KeyInformationClass,
           OUT PVOID KeyInformation,
           IN ULONG KeyInformationLength,
           OUT PULONG ResultLength
           );
}

int main(int argc, char* argv[])
{
  HKEY hKey;

  RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Far\\Editor", 0, KEY_ALL_ACCESS, &hKey );

  if( hKey )
  {
    ULONG l = 1024;
    PKEY_BASIC_INFORMATION kbi = (PKEY_BASIC_INFORMATION)(new char[l]);

    memset( kbi, 0, l );
    ZwQueryKey( hKey, KeyBasicInformation, kbi, l, &l ); 
    wprintf(L"Basic Info:[%s]\n", kbi->Name);

    memset( kbi, 0, l );
    ZwQueryKey( hKey, KeyNodeInformation, kbi, l, &l );  
    wprintf(L"Node Info:[%s]\n", kbi->Name);

    memset( kbi, 0, l );
    ZwQueryKey( hKey, KeyFullInformation, kbi, l, &l );  
    wprintf(L"Full Info:[%s]\n", kbi->Name);

    memset( kbi, 0, l );
    ZwQueryKey( hKey, KeyNameInformation, kbi, l, &l );  
    wprintf(L"Name Info:[%s]\n", kbi->Name);

    RegCloseKey( hKey );
    delete [] (char*)kbi;
  }
    return 0;
}

на выходе получаю такую инфу

Basic Info:[Editor]
Node Info:[]
Full Info:[]
Name Info:[TRY\USER\S-1-5]

что-то никакого полного пути нету. Видимо опять что-то не так делаю.
Просветите
Спасибо
The life is relative and reversible.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.