Вопрос

У нас есть устаревшее заявление, которое обращается к реестру. Поскольку это 32 -битное приложение, оно обращается к реестру в Windows 7 через виртуализацию реестра при ссылке на HKEY_LOCAL_MACHINE Software. Мой вопрос заключается в том, какие настройки (ы) в Visual Studio нам нужно изменить для составления наших приложений, где они получают доступ к реестру «обычно», не проходя виртуализацию реестра?

Это было полезно?

Решение 3

Вы имеете в виду так?

$web = Get-SPWeb http:/SC/site
$web.WebTemplate + " " + $web.WebTemplateId
$web.close()
.

Другие советы

Если вы внимательно прочитаете страницу виртуализации реестра, вы заметите, что виртуализация не ограничена 64-разрядными окнами. В нем говорится, что только 32-битные процессы будут виртуализированы. Но виртуализация выполняется как на 32-, так и для 64-битной перспективы, так и позже. Таким образом, заголовок вопроса и тег X64 немного вводят в заблуждение.

Чтобы ответить на ваш вопрос, на той же странице говорится: «Виртуализация реестра отключена для следующих: ... процессов, которые запросили ExecutionLevel, указанные в их манифестах».

Таким образом, вы можете отключить виртуализацию, добавив манифестный файл в ваш исполняемый файл, который указывает его уровень выполнения. Есть по крайней мере статья Microsoft KB о том, как это сделать в Visual Studio 2005: http://support.microsoft.com/kb/944276.

Почему бы тебе не использовать:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\...");
return (string)key.GetValue("blah");

и добавьте доступ к реестру в файле customtrust.config.

Или это не работает в Windows 7?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top