Что ж, после некоторого реверс-инжиниринга netsh.exe и подробного анализа я думаю, что для создания постоянного адреса ipv6 достаточно информации.
Адрес ipv6 (UNICAST) хранится в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a01-9b1a-11d4-9123-0050047759bc}\10
Для каждого добавляемого адреса ipv6 создайте значение REG_BINARY так, чтобы имя значения содержало NET_LUID , объединенное с адресом ipv6 полностью. Как, например, если адрес ipv6 - 2001 :: 1, имя значения будет 000000090000060020010000000000000000000000000001 , где первые 16 символов - это NET_LUID сетевого адаптера, а остальные - полный адрес ipv6.
Эти данные значения реестра сделаны из структуры длиной 48 байт, приведенной ниже:
typedef struct _UNKNOWN {
ULONG ValidLifetime;
ULONG PreferredLifetime;
NL_PREFIX_ORIGIN PrefixOrigin;
NL_SUFFIX_ORIGIN SuffixOrigin;
UINT8 OnLinkPrefixLength;
BOOLEAN SkipAsSource;
UCHAR Unknown[28];
} UNKNOWN;
Последние 28 байтов этой структуры неизвестны и должны быть установлены в 0xFF.
Обратитесь к MIB_UNICASTIPADDRESS_ROW информации о структуре в msdn для получения дополнительной информации о членах структуры UNKNOWN.
При этом я также выяснил, что ANYCAST-адреса ipv6 аналогичным образом хранятся в разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a01-9b1a-11d4-9123-0050047759bc}\8`\