Форум: "Прочее";
Текущий архив: 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.007 c