У меня есть библиотека классов, которая хранит общесистемные данные конфигурации в реестре (HKLM \ Software \ XXX). Эта библиотека используется в различных приложениях (службах, формах Windows, веб-приложениях, консольных приложениях) в различных версиях Windows (XP, 2003, 7, 2008 R2). Из-за этого удостоверение приложения не согласовано и может даже не входить в группу администраторов компьютера. Итак, я создал пользователя с правами администратора домена AD и выполняю олицетворение, чтобы получить доступ на запись в реестр. Это отлично работает в XP / 2003, но не в системах с поддержкой UAC (7 / 2008R2). Насколько я понимаю, только интерактивные логины разделяют токены, что подразумевает, что неинтерактивные входы (идентификаторы служб, идентификаторы пула приложений и т. Д.) Этого не делают. Я не могу найти ничего, чтобы подтвердить это, но, исходя из этого предположения, олицетворение, которое я делаю, должно работать.
Я написал класс-оболочку для олицетворения с использованием собственного LogonUser (тип входа в сеть, поставщик по умолчанию) и DuplicateTokenEx ( олицетворение, первичный токен), затем WindowsIdentity.Impersonate (). Я получаю ссылку на свой корневой ключ:
using (ECR.Impersonator imp = new ECR.Impersonator("XXX", "XXX", "XXX"))
{
_root = Registry.LocalMachine.CreateSubKey("SOFTWARE\\XXX", RegistryKeyPermissionCheck.ReadWriteSubTree);
}
Согласно MSDN , при использовании ReadWriteSubTree это должен быть ЕДИНСТВЕННЫЙ раз, когда выполняется проверка безопасности. Я могу записывать значения в этот ключ, создавать подключи (также используя ReadWriteSubTree) и записывать значения в эти подключи без необходимости повторной проверки безопасности. {попробуйте {DoSomething (); } catch (Exception e) {// делаем что-то с e} Я бы предпочел ...
Я работаю над XML-файлом макета и хочу установить цвет фона для LinearLayout. Этот бит, который я сейчас использую, работает отлично:
android:background="#1a64b7"
Однако я бы предпочел отказаться от него. В моем файле strings.xml у меня есть
#1a64b7
, но когда я использую его следующим образом:
android:background="@string/bg_blue"
он отлично отображается в предварительном просмотре графического макета в Eclipse, но приложение вылетает, как только открывается. Есть идеи? Большое спасибо.
Ник