уже замучался бится: есть код, который по DDE соединяется с DDE сервером для отсылки данных. Все хорошо работало, пока не наткнулись на то, что при включенном UAC (User Access Control) в Vista и 7 функция DDEConnect() выдает по DDeGetLastError() ошибку DMLERR_NO_CONV_ESTABLISHED. Как выключаю UAC, ошибка исчезает, попытки добавить манифест с запросом повышенных привелегий и к серверу, и к клиенту эффекта не принесло. Что же делать?
Здравствуйте, RonWilson, Вы писали:
RW>Привет всем,
RW>уже замучался бится: есть код, который по DDE соединяется с DDE сервером для отсылки данных. Все хорошо работало, пока не наткнулись на то, что при включенном UAC (User Access Control) в Vista и 7 функция DDEConnect() выдает по DDeGetLastError() ошибку DMLERR_NO_CONV_ESTABLISHED. Как выключаю UAC, ошибка исчезает, попытки добавить манифест с запросом повышенных привелегий и к серверу, и к клиенту эффекта не принесло. Что же делать?
DDE is not actively developed for more than a decade. Win32 inherited DDE from Win16. Microsoft is stuck with it, at least for the lifetime of Win64. So officially it is still supported.
Avoid participating in DDE conversations though. Faulty DDE programs can hang every program in a DDE conversation. It is not designed for today's security guidelines.
Здравствуйте, Mr.Delphist, Вы писали:
MD>Здравствуйте, RonWilson, Вы писали:
RW>>Привет всем,
RW>>уже замучался бится: есть код, который по DDE соединяется с DDE сервером для отсылки данных. Все хорошо работало, пока не наткнулись на то, что при включенном UAC (User Access Control) в Vista и 7 функция DDEConnect() выдает по DDeGetLastError() ошибку DMLERR_NO_CONV_ESTABLISHED. Как выключаю UAC, ошибка исчезает, попытки добавить манифест с запросом повышенных привелегий и к серверу, и к клиенту эффекта не принесло. Что же делать?
столкнулся с аналогичной проблемой: есть dde сервер в виде exe файла
1. при подключении клиента являющегося exe файлом все работает
2. при попытке подключения из того же exe файла но запущенного в виде windows service получаю сообщение об ошибке DMLERR_NO_CONV_ESTABLISHED
запускал сервис:
1. от имени системной учетной записи с включенной опцией "Разрешить взаимодействие с рабочим столом"
2. от имени системной учетной записи с выключенной опцией "Разрешить взаимодействие с рабочим столом"
3. от имени пользователя вошедшего в windows
4. сервер запускал от имени администратора в различной комбинацией с пунктами 1-3, тоже не помогло
операционная система windows 7 x64
приложение собирается в VS2010 с опцией Platforn target x86 (при запуске в режиме Debug в VS2010 тоже работает)
Здравствуйте, vehfl, Вы писали:
V>Здравствуйте, Mr.Delphist, Вы писали:
MD>>Здравствуйте, RonWilson, Вы писали:
RW>>>Привет всем,
RW>>>уже замучался бится: есть код, который по DDE соединяется с DDE сервером для отсылки данных. Все хорошо работало, пока не наткнулись на то, что при включенном UAC (User Access Control) в Vista и 7 функция DDEConnect() выдает по DDeGetLastError() ошибку DMLERR_NO_CONV_ESTABLISHED. Как выключаю UAC, ошибка исчезает, попытки добавить манифест с запросом повышенных привелегий и к серверу, и к клиенту эффекта не принесло. Что же делать?
V>столкнулся с аналогичной проблемой: есть dde сервер в виде exe файла
V>1. при подключении клиента являющегося exe файлом все работает V>2. при попытке подключения из того же exe файла но запущенного в виде windows service получаю сообщение об ошибке DMLERR_NO_CONV_ESTABLISHED
V>запускал сервис: V>1. от имени системной учетной записи с включенной опцией "Разрешить взаимодействие с рабочим столом" V>2. от имени системной учетной записи с выключенной опцией "Разрешить взаимодействие с рабочим столом" V>3. от имени пользователя вошедшего в windows V>4. сервер запускал от имени администратора в различной комбинацией с пунктами 1-3, тоже не помогло
V>операционная система windows 7 x64 V>приложение собирается в VS2010 с опцией Platforn target x86 (при запуске в режиме Debug в VS2010 тоже работает)
я пришел к выводу, что при включенном UAC нельзя слать сообщения процессу, который породил не ты
Здравствуйте, RonWilson, Вы писали:
RW>Здравствуйте, vehfl, Вы писали:
V>>Здравствуйте, Mr.Delphist, Вы писали:
MD>>>Здравствуйте, RonWilson, Вы писали:
RW>>>>Привет всем,
RW>>>>уже замучался бится: есть код, который по DDE соединяется с DDE сервером для отсылки данных. Все хорошо работало, пока не наткнулись на то, что при включенном UAC (User Access Control) в Vista и 7 функция DDEConnect() выдает по DDeGetLastError() ошибку DMLERR_NO_CONV_ESTABLISHED. Как выключаю UAC, ошибка исчезает, попытки добавить манифест с запросом повышенных привелегий и к серверу, и к клиенту эффекта не принесло. Что же делать?
V>>столкнулся с аналогичной проблемой: есть dde сервер в виде exe файла
V>>1. при подключении клиента являющегося exe файлом все работает V>>2. при попытке подключения из того же exe файла но запущенного в виде windows service получаю сообщение об ошибке DMLERR_NO_CONV_ESTABLISHED
V>>запускал сервис: V>>1. от имени системной учетной записи с включенной опцией "Разрешить взаимодействие с рабочим столом" V>>2. от имени системной учетной записи с выключенной опцией "Разрешить взаимодействие с рабочим столом" V>>3. от имени пользователя вошедшего в windows V>>4. сервер запускал от имени администратора в различной комбинацией с пунктами 1-3, тоже не помогло
V>>операционная система windows 7 x64 V>>приложение собирается в VS2010 с опцией Platforn target x86 (при запуске в режиме Debug в VS2010 тоже работает)
RW>я пришел к выводу, что при включенном UAC нельзя слать сообщения процессу, который породил не ты
Здравствуйте, vehfl, Вы писали:
V>Здравствуйте, RonWilson, Вы писали:
RW>>Здравствуйте, vehfl, Вы писали:
V>>>Здравствуйте, Mr.Delphist, Вы писали:
MD>>>>Здравствуйте, RonWilson, Вы писали:
RW>>>>>Привет всем,
RW>>>>>уже замучался бится: есть код, который по DDE соединяется с DDE сервером для отсылки данных. Все хорошо работало, пока не наткнулись на то, что при включенном UAC (User Access Control) в Vista и 7 функция DDEConnect() выдает по DDeGetLastError() ошибку DMLERR_NO_CONV_ESTABLISHED. Как выключаю UAC, ошибка исчезает, попытки добавить манифест с запросом повышенных привелегий и к серверу, и к клиенту эффекта не принесло. Что же делать?
V>>>столкнулся с аналогичной проблемой: есть dde сервер в виде exe файла
V>>>1. при подключении клиента являющегося exe файлом все работает V>>>2. при попытке подключения из того же exe файла но запущенного в виде windows service получаю сообщение об ошибке DMLERR_NO_CONV_ESTABLISHED
V>>>запускал сервис: V>>>1. от имени системной учетной записи с включенной опцией "Разрешить взаимодействие с рабочим столом" V>>>2. от имени системной учетной записи с выключенной опцией "Разрешить взаимодействие с рабочим столом" V>>>3. от имени пользователя вошедшего в windows V>>>4. сервер запускал от имени администратора в различной комбинацией с пунктами 1-3, тоже не помогло
V>>>операционная система windows 7 x64 V>>>приложение собирается в VS2010 с опцией Platforn target x86 (при запуске в режиме Debug в VS2010 тоже работает)
RW>>я пришел к выводу, что при включенном UAC нельзя слать сообщения процессу, который породил не ты
V>UAC отключен
под отключенным UAC подразумеваю: при запуске приложения uac в настройке выдаче уведомлений о вносимых изменениях в компьютер установлено "Никогда не уведомлять"
UAC блокирует оконные сообщения от менее привилегированного процесса к более привилегированному. DDE — работает на оконных сообщениях, и без спец мер точно не сможет работать между процессами с разным уровнем привилегий.
Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST.
Расскажете потом что вышло
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
O>UAC блокирует оконные сообщения от менее привилегированного процесса к более привилегированному. DDE — работает на оконных сообщениях, и без спец мер точно не сможет работать между процессами с разным уровнем привилегий. O>Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST. O>Расскажете потом что вышло
O>>Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST. O>>Расскажете потом что вышло
V>спасибо, но ничего не получилось
жаль делали так:
for (UINT m = WM_DDE_FIRST; m<=WM_DDE_LAST; ++m) ChangeWindowMessageFilter (m, MSGFLT_ADD);
?
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
O>>>Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST. O>>>Расскажете потом что вышло
V>>спасибо, но ничего не получилось O>жаль делали так: O>
но меня в конечном итоге это все равно не устроит, так как это необходимо делать, как я понимаю, в коде сервера DDE, но я могу это сделать только в своем тестовом сервере DDE, а в реальном к которому, в конечном итоге, необходимо подключиться это не возможно, так как есть только исполняемый файл
Здравствуйте, ononim, Вы писали:
O>>>Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST. O>>>Расскажете потом что вышло
V>>спасибо, но ничего не получилось O>жаль делали так: O>
V>в VS2010 создать windows service, где на OnStart сервиса есть "одна только строчка"(с): V>
V>Process.Start(@"ServerDDE.exe");
V>
V>оба сервиса запускались от имени системной учетной записи с включенной опцией "Разрешить взаимодействие с рабочим столом"
В исходном посте ваще про сервис ни слова. Начиная с семерки сервисы работают на отдельной оконной станции к которой не имеют доступа юзерские приложения, и UAC тут кстати не причем.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
O>В исходном посте ваще про сервис ни слова.
я вроде написал что у меня проблемы именно с сервисом, но возможно это
V>>1. при подключении клиента являющегося exe файлом все работает V>>2. при попытке подключения из того же exe файла но запущенного в виде windows service получаю сообщение об ошибке DMLERR_NO_CONV_ESTABLISHED
было не совсем точным описанием моей проблемы в сообщении от 03.04.12 15:53
O>Начиная с семерки сервисы работают на отдельной оконной станции к которой не имеют доступа юзерские приложения, и UAC тут кстати не причем.
не могли быть дать ссылку где про это можно подробней прочитать
Здравствуйте, vehfl, Вы писали:
O>>Начиная с семерки сервисы работают на отдельной оконной станции к которой не имеют доступа юзерские приложения, и UAC тут кстати не причем.
V>не могли быть дать ссылку где про это можно подробней прочитать
O>>В исходном посте ваще про сервис ни слова. V>я вроде написал что у меня проблемы именно с сервисом, но возможно это
А я отвечал на корневое сообщение
которое в древовидном виде форума в связи с сомнительной особенностью RSDN всегда помечается временем последнего сообщения, сорри
V>было не совсем точным описанием моей проблемы в сообщении от 03.04.12 15:53 O>>Начиная с семерки сервисы работают на отдельной оконной станции к которой не имеют доступа юзерские приложения, и UAC тут кстати не причем. V>не могли быть дать ссылку где про это можно подробней прочитать
okman уже все написал, и действительно с Висты, в последнее время я ее во внимание не принимаю, подсознательно считая бета версией семерки
Как много веселых ребят, и все делают велосипед...