2009-08-24 8 views
4

В контексте обобщенного .NET-компонента, который может быть размещен в различных сценариях - например, 64-битном или нет, интерактивном процессе или нет, мне нужно записать в реестр в области, которая зависит от виртуализации UAC. Однако я хочу, чтобы такой доступ не был виртуализирован, чтобы каждое исполнение не подвергалось капризам текущего контекста (т. Е. Не хотелось бы, чтобы одно чтение из HKLM имело манифест, а другое из HKCU. .VirtualStore, потому что это не так).Программный отказ от виртуализации реестра

Другими словами, я ищу something analogous to KEY_WOW64_64KEY или reg.exe REG_KEY_DONT_VIRTUALIZE, чтобы указать, что я не хочу быть виртуализированным ни при каких обстоятельствах. Или есть какая-то форма синтаксиса, связанного с канонизацией, которую я могу использовать, чтобы заставить его а-ля так, как вы указываете имя файла 260 char?

У меня все нормально, если код не работает, если исполняемый пользователь не имеет соответствующих разрешений в соответствующем разделе реестра.

Этот вопрос сильно связан с [этот вопрос на обнаружение виртуализации реестра] (Detecting registry virtualization), но обнаружить определенно в этом контексте недостаточно.

ответ

0

Приложения с манифестом, поддерживающим UAC, независимо от того, указали ли они какInvoker или requireAdministrator, не виртуализированы. Если с ним все в порядке, перейдите с помощью asInvoker.

+0

Привет, Кейт, спасибо за ответ. К сожалению, [«В контексте обобщенного компонента»] оговорка в вопросе заключается в том, чтобы указать, что это вне моего контроля, следовательно, мой вопрос. –

+0

Но я держал пари, что у вас есть ответы на многие мои другие открытые эзотерические вопросы, которые просто ждут, чтобы выпрыгнуть - если ваш DNR eps - это что-то, что можно сделать: D –

+0

О, боже, вам, возможно, придется отправиться в зону прохода COM-уровня. Я не уверен, что это эквивалент .NET, если таковой есть. –