Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.03.14;
Скачать: [xml.tar.bz2];

Вниз

Как включить Drag n Drop в висте   Найти похожие ветки 

 
Кто б сомневался ©   (2009-12-06 21:22) [0]

Знач. включен UAC, имеется прога, которая на XP работает Drag and Drop, а вот на висте не работает. Это из за UAC.  Нужна цифровая подпись.
Прога запускается под правами админа, но это все равно не помогает.
Как включить эту фичу на уровне юзера Висты, не выключая UAC?
Что нужно сделать?


 
Игорь Шевченко ©   (2009-12-06 21:46) [1]


> Что нужно сделать?


цифровую подпись


 
Кто б сомневался ©   (2009-12-06 21:51) [2]


> цифровую подпись


Программа чужая, я просто юзер.  Программа бесплатная, т.е. врядли разработчик будет еще покупать за 400$ в год лицензию для бесплатной проги.
Т.е. Microsoft ничего не предусмотрела для таких случаев?
А в Win 7 такая же глупость?


 
Eraser ©   (2009-12-06 21:53) [3]

> [0] Кто б сомневался ©   (06.12.09 21:22)

прога запрашивает права админа?
у меня нормально с UAC Drag and Drop работает.


 
Кто б сомневался ©   (2009-12-06 21:55) [4]


> прога запрашивает права админа?


Да.


 
DVM ©   (2009-12-06 22:04) [5]


> Знач. включен UAC, имеется прога, которая на XP работает
> Drag and Drop, а вот на висте не работает

Как проявляется то? Что и куда перетаскивается?


 
TUser ©   (2009-12-06 23:10) [6]

Может отключить UAC? Нне так добр черт как его малюют.


 
Кто б сомневался ©   (2009-12-06 23:28) [7]


> Может отключить UAC?


Если отключить UAC все пашет. Но нужно ж с UAC, как честный и доверчивый юзер :)  Просто большинство юзает UAC.


> Как проявляется то? Что и куда перетаскивается?


Обычный WM_DROPFILES не отрабатывает, я это давно еще встречал.


 
TUser ©   (2009-12-06 23:34) [8]

А если большинство юзеров себе гвозди в голову забивать будут?


 
Eraser ©   (2009-12-07 00:02) [9]

> [7] Кто б сомневался ©   (06.12.09 23:28)


> Обычный WM_DROPFILES не отрабатывает, я это давно еще встречал.

значит надо переделать на интерфейсы - заработает.


 
Кто б сомневался ©   (2009-12-07 00:47) [10]

Обычный юзер : т.е. вариантов кроме отключеня UAC нет.

Разработчик: можно поподробнее насчет интерфейсов?
Как он называется?


 
Eraser ©   (2009-12-07 01:00) [11]

> т.е. вариантов кроме отключеня UAC нет.

видимо нет.


> Разработчик: можно поподробнее насчет интерфейсов?
> Как он называется?

IDropTarget


 
Кто б сомневался ©   (2009-12-07 01:17) [12]

Я чет не пойму зачет так по глупому сделали. Через обычный DROPFILES нельзя (непонятно почему кстати), а через интерфейсы можно. Неверю чтобы MS провтыкали.

Спасибо за подсказку Eraser, я не знал.


 
Eraser ©   (2009-12-07 03:49) [13]

> [12] Кто б сомневался ©   (07.12.09 01:17)


> Я чет не пойму зачет так по глупому сделали. Через обычный
> DROPFILES нельзя (непонятно почему кстати), а через интерфейсы
> можно. Неверю чтобы MS провтыкали.

UAC глобально отсылку сообщений фильтрует вот и DROPFILES под раздачу попал, видимо.


 
Кто б сомневался ©   (2009-12-07 13:24) [14]


> UAC глобально отсылку сообщений фильтрует вот и DROPFILES
> под раздачу попал,


Да нет, вы думаете случайно? Тогда  бы исправили это в SP1 и SP2 - тем более криков было в инете не мало было.
что-то другое, видимо прикрывается какая то уязвимость.


 
Eraser ©   (2009-12-07 17:08) [15]

видимо все сообщения под раздачу попали
When UAC is active (which is a default setting) even when user logs in as an administrator, most of her programs run as restricted processes, i.e. they have only some very limited subset of privileges in their process token. Also, they run at, so called, Medium integrity level, which, among other things, should prevent those applications from interacting with higher integrity level processes via Window messages.
http://theinvisiblethings.blogspot.com/2007/02/running-vista-every-day.html


 
antonn ©   (2009-12-07 23:14) [16]

а чем грозит нефильтрование DROPFILES? ну попадут на форму объекты к которым уже есть доступ


 
TIF ©   (2009-12-08 01:23) [17]

Нельзя перетаскивать что-то из-приложений без прав в приложения с правами. Это нововведения UAC

Нельзя перетащить txt-файл в блокнот, например, если тот запущен с правами администратора (и UAC работает)


 
TIF ©   (2009-12-08 01:27) [18]

Подсистема сообщений Windows также использует уровни целостности для реализации UIPI, препятствуя отправлению процессом всех сообщений, кроме нескольких информационных оконных сообщений, в окна, принадлежащие процессу с более высоким IL. Это позволяет предотвратить ввод в окна процессов с повышенными правами процессами обычных пользователей и разрушение процесса с повышенными правами отправкой ему неправильно сформированных сообщений, вызывающих переполнение внутреннего буфера. Процессы могут разрешать прохождение дополнительных сообщений сквозь защиту, вызывая API-функцию ChangeWindowMessageFilter. UIPI-изоляция также блокирует доступ к окнам процессов с более высоким IL с тем, чтобы, например, процесс обычного пользователя не мог захватить нажатия клавиш пользователем в административных приложениях.

http://technet.microsoft.com/ru-ru/magazine/2007.06.uac.aspx

Вроде оно?


 
Кто б сомневался ©   (2009-12-24 04:15) [19]

Вобщем сегодня сделал так как сказал Eraser


> Eraser ©   (07.12.09 00:02) [9]
>
> > [7] Кто б сомневался ©   (06.12.09 23:28)
>
>
> > Обычный WM_DROPFILES не отрабатывает, я это давно еще
> встречал.
>
> значит надо переделать на интерфейсы - заработает.


И нифига. Как было так и осталось.
Решений нет
http://social.msdn.microsoft.com/Forums/en-US/windowsuidevelopment/thread/2fa935cf-be57-4bcc-9b96-7ee5a6b2b7a5/



> TIF ©   (08.12.09 01:27) [18]



> вызывая API-функцию ChangeWindowMessageFilter.


Не работает для D"n D см. ссылку выше.

Eraser не могли бы вы скинуть код?

Код такой - для XP все работает, при отклчюенном UAC тоже в Висте тоже. Но при включенном UAC и админских правах нифига. Как вы делали  Eraser?
Вот он:


function TMyListView.Drop(const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult;
var
    test: TStringList;
begin
 test := TStringList.Create;
 GetFileListFromObj(dataObj, test);
...
end

procedure TMyListView.GetFileListFromObj(const DataObj: IDataObject;
 const FileList: TStrings);
var
 FmtEtc: TFormatEtc;         // specifies required data format
 Medium: TStgMedium;         // storage medium containing file list
 DroppedFileCount: Integer;  // number of dropped files
 I: Integer;                 // loops thru dropped files
 FileNameLength: Integer;    // length of a dropped file name
 FileName: string;           // name of a dropped file
begin
 // Get required storage medium from data object
 FmtEtc.cfFormat := CF_HDROP;
 FmtEtc.ptd := nil;
 FmtEtc.dwAspect := DVASPECT_CONTENT;
 FmtEtc.lindex := -1;
 FmtEtc.tymed := TYMED_HGLOBAL;
 OleCheck(DataObj.GetData(FmtEtc, Medium));
 try
   try
     // Get count of files dropped
     DroppedFileCount := DragQueryFile(
       Medium.hGlobal, $FFFFFFFF, nil, 0
     );
     // Get name of each file dropped and process it
     for I := 0 to Pred(DroppedFileCount) do
     begin
       // get length of file name, then name itself
       FileNameLength := DragQueryFile(Medium.hGlobal, I, nil, 0);
       SetLength(FileName, FileNameLength);
       DragQueryFile(
         Medium.hGlobal, I, PChar(FileName), FileNameLength + 1
       );
       // add file name to list
       FileList.Add(FileName);
     end;
   finally
     // Tidy up - release the drop handle
     // don"t use DropH again after this
     DragFinish(Medium.hGlobal);
   end;
 finally
   ReleaseStgMedium(Medium);
 end;
end;


 
Eraser ©   (2009-12-24 04:33) [20]

> [19] Кто б сомневался ©   (24.12.09 04:15)

проверил, работает только перетаскивание ИЗ приложения с правами админа. увы. ну я давно решил проблему с UAC путем передачи всех обязанностей, которые нужно выполнять из под ограниченного пользователя отельному процессу, работающему с правами текущего пользователя.


 
Кто б сомневался ©   (2009-12-24 04:51) [21]


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


Блин, но это действительно такой ugly hack что я незнаю.. Это ж отдельный exe с формами.
Ведь понизить права нельзя насколько я понял..


 
Eraser ©   (2009-12-24 05:09) [22]

может тогда проще вынести функционал, который требует права админа в отдельный exe?


 
Кто б сомневался ©   (2009-12-24 05:32) [23]


> может тогда проще вынести функционал, который требует права
> админа в отдельный exe?


Проще тогда все оставить как есть, пусть юзают кнопочку "обзор". Ну или отключают UAC,


 
TIF ©   (2009-12-24 17:48) [24]

> Не работает для D"n D см. ссылку выше.

Работает :)
Правда, оказывается, нужно немного поколдовать - разрешить ещё и недокументированное сообщение WM_COPYGLOBALDATA (= 0x0049) вдобавок к WM_DROPFILES

Информация взята с rsdn:
http://rsdn.ru/forum/winapi/3496324.flat.aspx


 
Кто б сомневался ©   (2009-12-24 19:06) [25]


> TIF ©   (24.12.09 17:48) [24]


Tif большое спасибо за подсказку. Если оно еще и работает - тогда реально большое спасибо :)
Ты меня выручил.. Иду проверять - отпишусь.


 
boriskb ©   (2009-12-24 19:16) [26]

Да охренеть!!

Я почти счастлив что практически уже не программирую.
Это же застрелиться.
С этой (такой) безопасностью с ума посходили.
Похоже на плитическую толерантность.
Не называй маму мамой, а папу папой - нарушаешь права геев.

Куда катится мир?!
:)  :(


 
Кто б сомневался ©   (2009-12-24 19:37) [27]


> С этой (такой) безопасностью с ума посходили.


Ты еще много не знаешь :)

К примеру с автозагруки программа требующая админ . прав не запустится. Только ручками.

Но если заплатить 400$ в год тогда она станет запускатся.
Если с автозапуском еще можно решить, то вот с драйверами вообще никак, - только покупка подписи за 400$ в год. Поэтому freeware и opensource накрывается медным тазом.


 
Кто б сомневался ©   (2009-12-24 20:23) [28]


> TIF ©   (24.12.09 17:48) [24]


Drag and Drop заработал!!
Правда не работает если разные уровни прав между программами, но главное что заработал.
Теперь и с рабочего стола все бросается и с проводника.
Тотал коммандер нужно запускать под админом, но главное работает со стандартных прог. СПАСИБО!


 
TIF ©   (2009-12-25 02:39) [29]

> Правда не работает если разные уровни прав между программами,
>  но главное что заработал.

Ну что заработает я верил, проверял месяц назад где-то на Win7, а вот за уточнение насчёт разных уровней прав тоже спасибо


 
Дмитрий Белькевич   (2009-12-25 17:44) [30]

В JEDI есть TJvDropTarget. В нём - JvDropTarget1.GetFilenames. Реализует IDropTarget.


 
Кто б сомневался ©   (2009-12-25 18:50) [31]


> В JEDI есть TJvDropTarget. В нём - JvDropTarget1.GetFilenames.
>  Реализует IDropTarget.


И?


 
Дмитрий Белькевич   (2009-12-25 19:57) [32]


> И?


А вот только что попробовал...

Не работает на 7-ке. Включается курсор, как будто вообще нет цели. Отключил UAC - заработало. Вот и не знаю - то ли реализация неверная, то ли оно так и должно работать.


 
Дмитрий Белькевич   (2009-12-25 20:07) [33]

На неподписанном, само собой.


 
Eraser ©   (2009-12-25 20:11) [34]

а что если подписать своим собственным сертификатом?


 
Кто б сомневался ©   (2009-12-25 21:11) [35]

Блин, нашли же уже решение, две строчки добавить всего и все будет работать в Висте.


 
Кто б сомневался ©   (2009-12-25 21:13) [36]

Удалено модератором
Примечание: п. 1 правил


 
Дмитрий Белькевич   (2009-12-25 21:59) [37]


> Блин, нашли же уже решение, две строчки добавить всего и
> все будет работать в Висте.


Мы не ищем лёгких (и не совсем правильных) путей.


 
Кто б сомневался ©   (2009-12-25 23:02) [38]


> Мы не ищем лёгких (и не совсем правильных) путей.


Здрасте приехали. Путь официальный, функция для этого и написана. Другое дело что не все об этом знают, и MS не кричит об этом, - дабы лицензии покупали почаще - все таки им большой процент идет.


 
DVM ©   (2009-12-25 23:06) [39]

Пора уже запретить под Windows работу любых программ, которые написаны НЕ MS или авторы которых не башляли MS за подпись. И все.


 
Игорь Шевченко ©   (2009-12-25 23:18) [40]

DVM ©   (25.12.09 23:06) [39]

Пора перестать писать программы



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2010.03.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.006 c
4-1230152087
snake
2008-12-24 23:54
2010.03.14
Установка ловушек в Vista


15-1261659128
Olegz77
2009-12-24 15:52
2010.03.14
Миниатюра окна в панели задач Windows Vista


2-1263470601
Darvin
2010-01-14 15:03
2010.03.14
Доступ к элементам двумерного PSafeArray


11-1214129126
<>
2008-06-22 14:05
2010.03.14
OpenSaveDialog выполняется через раз


2-1263132160
Olya
2010-01-10 17:02
2010.03.14
Подключение Dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский