-
Суслик_ (08.12.09 15:06) [0]Здравствуйте.
1. ЕСТЬ
Есть сервер в виде системной службы, на котором создается именованный канал примерно так (выдрано из кода):
var
kSD: TSecurityDescriptor;
kSA: TSecurityAttributes;
begin
InitializeSecurityDescriptor(@kSD, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(@kSD, true, nil, false);
kSA.nLength:= SizeOf(kSA);
kSA.lpSecurityDescriptor := @kSD;
kSA.bInheritHandle := False;
_PipeInst := CreateNamedPipe(
PAnsiChar(kFullPipeName), // pipe name
PIPE_ACCESS_DUPLEX // read/write access
or FILE_FLAG_OVERLAPPED, // overlapped mode
PIPE_TYPE_BYTE // byte-type pipe
or PIPE_READMODE_BYTE // byte-read mode
or PIPE_WAIT, // blocking mode
cInstancesCount, // number of instances
cBufSize, // output buffer size
cBufSize, // input buffer size
cWaitPipeTimeout, // client time-out
@kSA); // default security attributes
Т.е. задаю явно security attr, так чтобы все могли иметь доступ к каналу.
Есть клиент на другой машине (естественно, он запускается под ограниченной записью пользователя), где я обращаюсь к каналу так:
kPipe := CreateFile(
PAnsiChar(kFullPipeName), // pipe name
GENERIC_READ or GENERIC_WRITE, // read and write access
0, // no sharing
nil, // default security attributes
OPEN_EXISTING, // opens existing pipe
0, // default attributes
0); // no template file
Т.е. не задаю явно security attr - вроде как не нужно.
2. СУТЬ ПРОБЛЕМЫ
Клиент (г. Саратов) после часа работы (т.е. изначально все работало) получает ошибку:
ERROR_DOWNGRADE_DETECTED
1265 (0x4F1)
The system detected a possible attempt to compromise security. Please ensure that you can contact the server that authenticated you.
3. ВОПРОС (ы)
3.1. Может ли причина проблемы состоять в том, что я на клиенте не указываю security attr?
3.2. Если ответ на п. 3.1 "да", то какие атрибуты мне нужно указать в CreateFile?
3.3. В чем может быть еще проблема?
4. ЧТО САМ ИСКАЛ
4.1. Часть гула просмотрена, ответа не нашел. -
Игорь Шевченко © (08.12.09 15:38) [1]
> 3.1. Может ли причина проблемы состоять в том, что я на
> клиенте не указываю security attr?
Нет. В противном случае ошибка бы появилась при открытии файла, что противоречит "после часа работы (т.е. изначально все работало)"
> 3.3. В чем может быть еще проблема?
В том, что ты не сказал:
а) откуда получается ошибка.
б) какие действия предпринимал клиент для получения ошибки. -
Rouse_ © (08.12.09 15:42) [2]445-ый порт в исключения фаервола добавь. Особливо если это стандартный фаервол, бо его вообще не понять он то работает то не работает.
-
Суслик_ (08.12.09 15:55) [3]Я поспрашивал пользователя.
В общем, у них сервер стоит на winxp. Насколько мне известно в WinXP лимит есть на входящие сетевые подключения.
У, правда, меня подключения не держаться (клиент подключился, клиент спросил, сервер ответил, клиент отвалился). Но их достаточно много, могут, видимо, и накладываться так что возникает превышение лимита.
Я вот только думал, что код ошибки при превышении лимита должен быть иной.
ВОПРОС - может ли быть ошибки 1265 использование в качестве сервера НЕсервеной операционной системы Windows?
И вообще, какой код ошибки должен быть при превышении лимита? -
clickmaker © (08.12.09 16:02) [4]> какой код ошибки должен быть при превышении лимита?
1220 или 1238? -
Суслик_ (08.12.09 16:21) [5]2Clickmaker
Благодарю. Да, именно они.
Значит это не мой случай. Завтра он попробует на Windows Server 2003 мой сервер переставить. Посмотрим, что будет.
Также сказал, что 445-й порт скорее всего у него Каспер закрывает. Хотя странно это - то работает, то не работает. Судя по моим данным (скриншоту) у него без проблем все работает в течении 2-3 часов. Если блокировка идет порта, то значит не должно работать вообще. -
Игорь Шевченко © (08.12.09 16:33) [6]
> Клиент (г. Саратов)
Клиент в Саратове, а сервер где ? -
Rouse_ © (08.12.09 16:34) [7]
> Также сказал, что 445-й порт скорее всего у него Каспер
> закрывает
Проверить нужно с обоих сторон. Он может и на твоей стороне закрываться. -
Суслик_ (08.12.09 16:38) [8]Да ни, и сервер и клиент у него - мы продаем комплекс.
Т.е. я вообще не знаю, что там происходит.