Этот код:
TComInterface<IStoreNamespace> pStore;
if (SUCCEEDED(CoCreateInstance(CLSID_StoreNamespace, NULL, CLSCTX_INPROC_SERVER, IID_IStoreNamespace, (LPVOID*)&pStore)))
{
if (SUCCEEDED(pStore->Initialize(Form1->Handle, 1)))
{
}
}
Создает интерфейс IStoreNamespace
. Но он использует стандартную идентификацию Outlook Express. Предполагается, что Initialize
предлагает выбор тождеств, если второй параметр равен 1
как указано выше (если он равен 0
используется идентификатор по умолчанию).
Документация здесь (http://msdn.microsoft.com/en-us/library/ms710212%28v=vs.85%29.aspx) говорит следующее:
Если значение dwReserved равно 0, пространство имен будет инициализироваться с использованием данных, связанных с идентификатором пользователя по умолчанию. Если значение dwReserved равно 1, пользователю будет предложено выбрать идентификатор пользователя для инициализации.
Единственный способ использовать другой идентификатор - это вручную переключить его.
Можно ли программным способом выбрать идентификацию?
После некоторого изучения выясняется, что нет возможности переключить личность из моей программы. Единственное, что доступно, - это вызов IStoreNamespace::Initialize
как указано выше, со вторым параметром (DWORD dwReserved
), установленным на 0
который использует идентификатор по умолчанию или 1
который открывает окно Outlook Express, если идентификатор выведен из системы и требует пароль или делает ничего не показывать, если личность не требует пароля.
Таким образом, автоматическое переключение идентификаторов невозможно с помощью этого интерфейса.