Столкнулся с похожей ситуацией:
1. Сервер — сервис, работает по системным пользователем
2. Клиенты работают под текущим пользователем.
3. Используется IPC и нельзя использовать конфигурационный файл.
Решать пришлось 2 проблемы:
1. Собственно ремотинг между IPC под разными пользователями и что
программный комплекс ставится на Windows с разными локализациями.
Код сервера
Нужно чтоб досутп к серверу был по Everyone, а Everyone в Русской версии зовется
"Все", по этому примеры найденные в Гугле не работали.
По этому сначала узнаем как зовут "евривана" на данном PC
SecurityIdentifier si = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
IdentityReference ir = si.Translate(typeof(NTAccount));
Потом собственно регистрируем канал IPC
// Регистрируем канал IPC сервера.
IDictionary poroperties = new Hashtable();
poroperties["name"] = "ipc";
poroperties["portName"] = "MyIPCPort";
poroperties["exclusiveAddressUse"] = "false";
poroperties.Add("authorizedGroup", ir.Value);//"Everyone");
poroperties.Add("secure", "True");
poroperties.Add("impersonationLevel", "Identification");
IpcServerChannel ipcServerChannel = new IpcServerChannel(poroperties, serverSinkProvider);
ChannelServices.RegisterChannel(ipcServerChannel, true);
Код клиентов:
IDictionary properties = new Hashtable();
properties.Add("name", "IPC Client Channel");
properties.Add("impersonationLevel", "Identify");
IpcClientChannel clientChannel = new IpcClientChannel(properties, new BinaryClientFormatterSinkProvider());
ChannelServices.RegisterChannel(clientChannel, true);
Примечание:
1. Инициализация через Hashtable — это "аналог" конфигурационного файла.
2. Как уже говорилось ранее true у RegisterChannel д.б. на клиенте и сервере.
... << RSDN@Home 1.2.0 alpha rev. 655>>