Как получить DigitalProductId из реестра через TSQL - PullRequest
1 голос
/ 11 января 2010

В настоящее время есть это, чтобы получить значение из реестра в TSQL. Однако мне нужно получить DigitalProductId, и он не возвращает требуемое значение. Я думаю, что он хранится в виде двоичного файла в реестре.

Есть идеи?

DECLARE @retvalue int, @data varchar(500)
EXECUTE @retvalue = master.dbo.xp_instance_regread 'HKEY_LOCAL_MACHINE',
'SOFTWARE\Microsoft\Windows NT\CurrentVersion',
'DigitalProductId', @param = @data OUTPUT
PRINT 'ProductId: '+ @data

Редактировать: Я обновил вопрос и код.

1 Ответ

0 голосов
/ 11 января 2010

DigitalProductId - это ключ REG_BINARY.

xp_instance_regread преобразует все, что читает, в строку с нулевым символом в конце, поэтому она никогда не вернет ничего значащего, если строка содержит NULLs.

xp_instance_regread - недокументированная процедура, которая не предназначена для использования в производственной среде. Если вам нужно прочитать ключи реестра со стороны SQL Server, вам лучше написать свой собственный XP, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...