что случилось с DDE в Vista & 7
От: RonWilson Россия  
Дата: 18.05.11 07:37
Оценка:
Привет всем,

уже замучался бится: есть код, который по DDE соединяется с DDE сервером для отсылки данных. Все хорошо работало, пока не наткнулись на то, что при включенном UAC (User Access Control) в Vista и 7 функция DDEConnect() выдает по DDeGetLastError() ошибку DMLERR_NO_CONV_ESTABLISHED. Как выключаю UAC, ошибка исчезает, попытки добавить манифест с запросом повышенных привелегий и к серверу, и к клиенту эффекта не принесло. Что же делать?
Re: что случилось с DDE в Vista & 7
От: Mr.Delphist  
Дата: 18.05.11 10:12
Оценка:
Здравствуйте, RonWilson, Вы писали:

RW>Привет всем,


RW>уже замучался бится: есть код, который по DDE соединяется с DDE сервером для отсылки данных. Все хорошо работало, пока не наткнулись на то, что при включенном UAC (User Access Control) в Vista и 7 функция DDEConnect() выдает по DDeGetLastError() ошибку DMLERR_NO_CONV_ESTABLISHED. Как выключаю UAC, ошибка исчезает, попытки добавить манифест с запросом повышенных привелегий и к серверу, и к клиенту эффекта не принесло. Что же делать?


Гм. DDE было списано в утиль уж очень давно как.

http://social.msdn.microsoft.com/Forums/en-US/windowscompatibility/thread/71c3050b-9738-46f5-bf0d-3a6ee22ef4e3

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.

Re[2]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 03.04.12 11:53
Оценка:
Здравствуйте, 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 тоже работает)
Re[3]: что случилось с DDE в Vista & 7
От: RonWilson Россия  
Дата: 03.04.12 11:57
Оценка:
Здравствуйте, 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 нельзя слать сообщения процессу, который породил не ты
Re[4]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 03.04.12 12:25
Оценка:
Здравствуйте, 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 нельзя слать сообщения процессу, который породил не ты


UAC отключен
Re[5]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 03.04.12 12:29
Оценка:
Здравствуйте, 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 в настройке выдаче уведомлений о вносимых изменениях в компьютер установлено "Никогда не уведомлять"
Re: что случилось с DDE в Vista & 7
От: ononim  
Дата: 03.04.12 17:51
Оценка: +1
UAC блокирует оконные сообщения от менее привилегированного процесса к более привилегированному. DDE — работает на оконных сообщениях, и без спец мер точно не сможет работать между процессами с разным уровнем привилегий.
Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST.
Расскажете потом что вышло
Как много веселых ребят, и все делают велосипед...
Re[2]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 04.04.12 07:03
Оценка:
Здравствуйте, ononim, Вы писали:

O>UAC блокирует оконные сообщения от менее привилегированного процесса к более привилегированному. DDE — работает на оконных сообщениях, и без спец мер точно не сможет работать между процессами с разным уровнем привилегий.

O>Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST.
O>Расскажете потом что вышло

спасибо, но ничего не получилось
Re[3]: что случилось с DDE в Vista & 7
От: ononim  
Дата: 04.04.12 08:46
Оценка:
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);

?
Как много веселых ребят, и все делают велосипед...
Re: что случилось с DDE в Vista & 7
От: EViruS Россия  
Дата: 04.04.12 10:24
Оценка:
Решение с запросом прав не устроит? — http://code.msdn.microsoft.com/windowsdesktop/CppUACSelfElevation-981c0160
Хотя, если манифест есть и приложение имеет на иконке щит (потребует привилегий), то это тоже самое будет.
Re[2]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 04.04.12 12:09
Оценка:
Здравствуйте, EViruS, Вы писали:

EVS>Решение с запросом прав не устроит? — http://code.msdn.microsoft.com/windowsdesktop/CppUACSelfElevation-981c0160

EVS>Хотя, если манифест есть и приложение имеет на иконке щит (потребует привилегий), то это тоже самое будет.

uac отключен, к сервису привязывался manifest с административными правами
Re[4]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 04.04.12 12:16
Оценка:
Здравствуйте, ononim, Вы писали:

O>>>Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST.

O>>>Расскажете потом что вышло

V>>спасибо, но ничего не получилось

O>жаль делали так:
O>
O>for (UINT m = WM_DDE_FIRST; m<=WM_DDE_LAST; ++m) ChangeWindowMessageFilter (m, MSGFLT_ADD);
O>

O>?
что то наподобие
ChangeWindowMessageFilter(WM_DDE_FIRST, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_INITIATE, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_TERMINATE, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_ADVISE, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_UNADVISE, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_ACK, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_DATA, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_REQUEST, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_POKE, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_EXECUTE, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DDE_LAST, MSGFLT_ADD);

вроде бы это все константы связанные с DDE

но меня в конечном итоге это все равно не устроит, так как это необходимо делать, как я понимаю, в коде сервера DDE, но я могу это сделать только в своем тестовом сервере DDE, а в реальном к которому, в конечном итоге, необходимо подключиться это не возможно, так как есть только исполняемый файл
Re[4]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 04.04.12 13:22
Оценка:
Здравствуйте, ononim, Вы писали:

O>>>Можно попробовать в наиболее привилегированном процессе разрешить DDE-шные мессаги, позвав ChangeWindowMessageFilter с мессагами от WM_DDE_FIRST до WM_DDE_LAST.

O>>>Расскажете потом что вышло

V>>спасибо, но ничего не получилось

O>жаль делали так:
O>
O>for (UINT m = WM_DDE_FIRST; m<=WM_DDE_LAST; ++m) ChangeWindowMessageFilter (m, MSGFLT_ADD);
O>

O>?

есть одно решение, взято отсюда: http://ndde.codeplex.com/discussions/60681

в VS2010 создать windows service, где на OnStart сервиса есть "одна только строчка"(с):
Process.Start(@"ServerDDE.exe");

оба сервиса запускались от имени системной учетной записи с включенной опцией "Разрешить взаимодействие с рабочим столом"

все заработало
Re[5]: что случилось с DDE в Vista & 7
От: ononim  
Дата: 04.04.12 13:35
Оценка:
V>в VS2010 создать windows service, где на OnStart сервиса есть "одна только строчка"(с):
V>
V>Process.Start(@"ServerDDE.exe");
V>

V>оба сервиса запускались от имени системной учетной записи с включенной опцией "Разрешить взаимодействие с рабочим столом"
В исходном посте ваще про сервис ни слова. Начиная с семерки сервисы работают на отдельной оконной станции к которой не имеют доступа юзерские приложения, и UAC тут кстати не причем.
Как много веселых ребят, и все делают велосипед...
Re[6]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 04.04.12 14:04
Оценка:
Здравствуйте, ononim, Вы писали:

O>В исходном посте ваще про сервис ни слова.


я вроде написал что у меня проблемы именно с сервисом, но возможно это

V>>1. при подключении клиента являющегося exe файлом все работает

V>>2. при попытке подключения из того же exe файла но запущенного в виде windows service получаю сообщение об ошибке DMLERR_NO_CONV_ESTABLISHED

было не совсем точным описанием моей проблемы в сообщении от 03.04.12 15:53

O>Начиная с семерки сервисы работают на отдельной оконной станции к которой не имеют доступа юзерские приложения, и UAC тут кстати не причем.


не могли быть дать ссылку где про это можно подробней прочитать
Re[7]: что случилось с DDE в Vista & 7
От: okman Беларусь https://searchinform.ru/
Дата: 04.04.12 15:30
Оценка:
Здравствуйте, vehfl, Вы писали:

O>>Начиная с семерки сервисы работают на отдельной оконной станции к которой не имеют доступа юзерские приложения, и UAC тут кстати не причем.


V>не могли быть дать ссылку где про это можно подробней прочитать


http://msdn.microsoft.com/en-us/windows/hardware/gg463353
http://msdn.microsoft.com/en-us/library/bb756986.aspx
http://msdn.microsoft.com/en-us/gg465091

Кстати, ononim, вероятно, имел в виду "начиная с Висты", а не "с семерки".
Re[7]: что случилось с DDE в Vista & 7
От: ononim  
Дата: 04.04.12 17:19
Оценка:
O>>В исходном посте ваще про сервис ни слова.
V>я вроде написал что у меня проблемы именно с сервисом, но возможно это
А я отвечал на корневое сообщение
Автор: RonWilson
Дата: 18.05.11
которое в древовидном виде форума в связи с сомнительной особенностью RSDN всегда помечается временем последнего сообщения, сорри

V>было не совсем точным описанием моей проблемы в сообщении от 03.04.12 15:53

O>>Начиная с семерки сервисы работают на отдельной оконной станции к которой не имеют доступа юзерские приложения, и UAC тут кстати не причем.
V>не могли быть дать ссылку где про это можно подробней прочитать
okman уже все написал, и действительно с Висты, в последнее время я ее во внимание не принимаю, подсознательно считая бета версией семерки
Как много веселых ребят, и все делают велосипед...
Re[8]: что случилось с DDE в Vista & 7
От: vehfl  
Дата: 04.04.12 19:39
Оценка:
okman, ononim спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.