Использование CLR для получения значения из реестра

Есть ли способ получить значение из реестра с помощью процедуры CLR, которая не требует регистрации Microsoft.Win32 в качестве сборки в SQL Server?

Я хочу получить DigitalProductId (мне нужно будет декодировать его в строку) из реестра в процедуре CLR и вернуть его в SQL.

Поддерживаемые пространства имен

CustomMarshalers
Microsoft.VisualBasic
Microsoft.VisualC
mscorlib
System
System.Configuration
System.Data
System.Data.OracleClient
System.Data.SqlXml
System.Deployment
System.Security
System.Transactions
System.Web.Services
System.Xml
System.Core.dll
System.Xml.Linq.dll

Могу ли я использовать для этого метод в mscorlib?

Изменить: я что-то упустил? Microsoft.Win32 можно использовать в CLR? Редактировать: Да, я что-то упустил. Его нужно будет установить как НЕБЕЗОПАСНУЮ сборку, а затем подписать и т. д., прежде чем я смогу использовать Microsoft.WIn32.


person Coolcoder    schedule 12.01.2010    source источник
comment
Просто к вашему сведению: вам не нужно устанавливать для своей сборки значение UNSAFE для использования Microsoft.Win32, вам нужно только UNSAFE, если вы обращаетесь к определенному коду внутри этого класса и/или системным ресурсам, которые требуют этого. Вероятно, в пространстве имен Microsoft.Win32 есть код, который будет выполняться в SAFE сборках.   -  person Solomon Rutzky    schedule 23.08.2015


Ответы (2)


Под «поддерживаемыми пространствами имен» вы подразумеваете сборки? mscorlib содержит пространство имен Microsoft.Win32, которое предоставляет тип Registry.

person Will Vousden    schedule 12.01.2010

вы можете попробовать использовать Win32 API напрямую с RegOpenKeyEx (advapi32) http://www.pinvoke.net/default.aspx/advapi32/RegOpenKeyEx.html

person Mladen Prajdic    schedule 12.01.2010
comment
Проблема заключается в использовании внешних или неподдерживаемых библиотек в среде CLR. У меня была бы такая же проблема, как зарегистрировать dll как сборку в SQL. Я хотел бы сделать это, используя только поддерживаемые пространства имен, если это возможно. - person Coolcoder; 12.01.2010
comment
Этот ответ неверен. Это определенно возможно, так как пространство имен Microsoft.Win32 содержится в mscorlib.dll, которое поддерживается. И я сам использую класс RegistryKey без необходимости регистрировать какие-либо другие библиотеки DLL в SQL Server. - person Solomon Rutzky; 23.08.2015