Исправление разрешений реестра для экспресс-установки SQL Server 2008

У меня есть распределенное приложение Windows (написанное на C #), которое в настоящее время использует MSDE. Было принято решение обновить клиентскую базу данных до SQL Server 2008 Express, поскольку в следующем году мы должны иметь возможность поддерживать Windows 7 (и по-прежнему поддерживать XP).

В настоящее время я использую командный файл для запуска установщика (а также использую Configuration.ini), но недавно во время установки обнаружил следующую ошибку.

«Не удалось исправить раздел реестра HKEY_LOCAL_MACHINE \ Software \ Microsoft \ MSSQLServer \ MSSQLServer \ SuperSocketNetLib \ Lpc. System.UnauthorizedAccessException: попытка выполнить несанкционированную операцию. В Microsoft.SqlServer.Configuration.FixSqlRegistryKey SqlServer.Configuration.FixSqlRegistryKey.Program.FixRegistryKey (String keyName) в Microsoft.SqlServer.Configuration.FixSqlRegistryKey.Program.FixRegistryKeyAndSubKeys (ключ RegistryKey) "

Я понимаю, в чем проблема, и как исправить ее вручную.

Мне нужно, чтобы приложение изменило этот раздел реестра заранее и добавило разрешения для группы администраторов или установило ключ для наследования разрешений от родителя. Я также открыт для других решений этой проблемы с установкой SQL 2008 Express.

Я изучаю, как изменить разрешения ключей реестра, но я сталкивался с проблемами, пытаясь заставить его работать правильно (и понять все классы и объекты, связанные с установкой разрешений).

Может ли кто-нибудь предоставить правильный способ добавить группу администраторов (любой машины) с разрешениями на полный контроль или как установить разрешения для ключа, чтобы он унаследовал от родительского?

Дополнительный вопрос: всегда ли они будут группой администраторов на каждой машине с Windows XP?

Спасибо!


person tc44    schedule 13.12.2010    source источник


Ответы (2)


Вы можете попробовать использовать subinacl.exe для установки разрешений для разделов реестра: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&displaylang=en

Группа администраторов существует на всех версиях XP.

person cosmin    schedule 14.12.2010
comment
Спасибо за ссылку. Однако мне нужно иметь возможность запускать сценарий на клиентском компьютере, который не будет находиться в данной сети. И мы определенно предпочли бы не устанавливать никаких дополнительных инструментов / программного обеспечения. Спасибо, в любом случае. - person tc44; 14.12.2010

Итак, у решения был файл temp.txt со следующим содержимым:

\Registry\Machine\Software\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Lpc [1 5 8]

Затем запустите это в командной строке (поместите текстовый файл в C: \ temp или что-то в этом роде):

C:\temp>regini temp.txt

Я действительно надеялся найти простой способ просто изменить разрешение на наследование, но это решение будет работать для моих целей, и я просто включу командный файл, который будет запускаться перед установкой SQL Server Express 2008.

person tc44    schedule 15.12.2010