Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В корзину из сервиса... [D7]


Страницы:   1 2 3

sniknik ©   (2011-02-11 16:47:00) 

Написал функцию -
function ToTrash(const Names: string): integer;
//Names - список файлов разделяемый и завершаемый #0 (в конце требуется двойной #0, т.е. добавляем еще один к строковому)
//пример - ToTrash('C:\Test1.tst'#0'C:\Test2.tst'#0);
var
 SHFileOpStruct: TSHFileOpStruct;
begin
 with SHFileOpStruct do begin
   Wnd   := 0; //Handle; без показа диалога не нужно
   wFunc := FO_DELETE;
   pFrom := @Names[1];
   pTo   := nil;
   fFlags:= FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
   fAnyOperationsAborted:= false;
   hNameMappings        := nil;
   lpszProgressTitle    := nil;
 end;
 result:= SHFileOperation(SHFileOpStruct);
end;


Вызов такой -
 SaveToLog('Test ToTrash');
 iErr:= ToTrash(FileName+#0); //ставил и явно типа 'C:\test.txt'
 if iErr > 0 then
   SaveToLog('ToTrash error - ' + IntToStr(iErr));


Работает... пока в приложении. Но нужно из сервиса (смысл в том, что есть файлы которые иногда бывают нужны "ранней версии", если произошла ошибка и идет ее разбор). В корзину, откуда можно достать, было бы удобно... но вот из сервиса почему то это не срабатывает.
Т.е. файл просто удаляется и все, в логе вижу запись 'Test ToTrash' и все, т.е. ошибки операции нет. И файла в корзине нет...

Пробовал запуск сервиса от имени пользователя под которым логинюсь, ставил взаимодействие с рабочим столом. Не помогает.

Вопрос, как быть?


Leonid Troyanovsky   (2011-02-13 08:53:00) [21]


> sniknik ©   (12.02.11 16:33) [25]

>  поддержка. Пусть клиенты этим пользоваться и не будут но
> то, что сделано должно быть просто в использовании, и работоспособно.
>  Но что будет гораздо сложнее маленькой процедурки в первом
> посте (осталось добавить нормальный ексепт с расшифровкой
> кодов словами и все).

Думаю, что ЦТО это тоже не удовлетворит, бо корзину надо чистить,
т.е., следить за этим, а ее еще поди найди /что сделать, как сделать/.

Я в похожем случае делал так: перед записью нового лога удалял
самый старый. Количество хранимых логов настраивал из реестра,
с умалчиваемым значением 10.

--
Regards, LVT.


sniknik   (2011-02-12 16:33:00) [22]

> ты игнорировал.
Не игнорировал, а не захотел эту "помойку" организовывать (ответ в - 2 абзац [16] пост), разные вещи. Т.к. сервис также идет клиентам, то и эта "организация" ложится на программу, либо в описательную часть, что сделать, как сделать/... поддержка. Пусть клиенты этим пользоваться и не будут но то, что сделано должно быть просто в использовании, и работоспособно. Но что будет гораздо сложнее маленькой процедурки в первом посте (осталось добавить нормальный ексепт с расшифровкой кодов словами и все).
Нес па?


Leonid Troyanovsky   (2011-02-12 16:11:00) [23]


> sniknik ©   (12.02.11 15:49) [23]

> Что тут непонятного? К примеру.
> Браузером пользуешься? Вот это клиент.

Пользуюсь, нормальный клиент.

> Сам файл больше не нужен. Он остается только для возможности
> сравнить, "а правильно ли движок (не клиент! там только
> кнопку нажали) его в базу затянул, т.е. вот тут криво отформатировано
> это от кривизны движка, или того, что в данные разные "теговые
> артефакты" вкрались.".

Предлжил на служебную помойку отправить - ты игнорировал.

--
Regards, LVT.


sniknik   (2011-02-12 15:49:00) [24]

Что тут непонятного? К примеру.
Браузером пользуешься? Вот это клиент. А серверный движок, например "друпал", это сервис. Обновляемые данные это файл с новостями которые "друпал" в свою базу затягивает и после в html преобразовывает и тому клиенту на отображение отдает.
Сам файл больше не нужен. Он остается только для возможности сравнить, "а правильно ли движок (не клиент! там только кнопку нажали) его в базу затянул, т.е. вот тут криво отформатировано это от кривизны движка, или того, что в данные разные "теговые артефакты" вкрались.".
Клиент и сервер никак не связаны, у них нет(чаще всего) общих юзеров, кокзин, папок, файлов и т.д... Исключение только в редких случаях на тестах когда оба на одной машине.

И вот тут, когда кто то "профукал" возможность сравнить (уже не с чем, "на капу нажал, он улетел"), ни данных в базе нет, ни файла данных... на сервере (все на сервере, только отображение и рычаги на клиенте). Ты говоришь сделай удаление в корзину клиента...???? т.к. оттуда обновляют, "капу" там нажимают. А на клиенте ко всему прочему не то, что юзера серверного (его по любому), но и корзины может не быть... зашибись раскладец.


Leonid Troyanovsky   (2011-02-12 15:20:00) [25]


> sniknik ©   (12.02.11 15:05) [21]

Спокойствие, только спокойствие.
Чес-говоря, не понял,
ничего не понял - очень быстро.

--
Regards, LVT.


sniknik   (2011-02-12 15:05:00) [26]

> AFAIK, запрет интерактивности сервисов возник благодаря заботе о безопасности.
Откуда взял, что нарушается запрет на интерактивность? Как раз и не хочу...
Пока все честно, стандартным протоколом... сервис = http сервер, с единственной "дыркой" 443-порт (по умолчанию), все запросы к нему по ssl каналу. Любое добавление это добавление "дырок". Причем без шифрации.

Особенно совет обновляться с клиента (получается в обход сервиса/левыми методами) только ради простоты поиска в корзине, файла который даже не нужен если по нормальному... нонсенс в общем.


Leonid Troyanovsky   (2011-02-12 13:58:00) [27]


> sniknik ©   (12.02.11 13:35) [18]

> Зато становится вовсе не простым обновление кучи клиентов
> вместо 1-го сервиса. + Или безопасность нафиг

AFAIK, запрет интерактивности сервисов возник
благодаря заботе о безопасности.

--
Regards, LVT.


KilkennyCat   (2011-02-12 13:53:00) [28]

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


sniknik   (2011-02-12 13:35:00) [29]

Работает сервис. Клиент это только "окно" пользователю, из которого идут запросы на действия.

> И искать просто.
Просто, но не нужно!
Зато становится вовсе не простым обновление кучи клиентов вместо 1-го сервиса. + Или безопасность нафиг (клиенту нужно будет открыть доступ к серверной базе), или делать каждому клиенту свою базу, тогда нафиг централизованность. ++ каждому клиенту тогда понадобятся свои сертификаты/доступ в инет, т.к. своя база подразумевает автономную работу. +++ настройка из 1 места "плодится" на сотню. И т.д. ++++ +++++ .... ИЗ-ЗА ФИГНИ!


Leonid Troyanovsky   (2011-02-12 13:01:00) [30]


> sniknik ©   (12.02.11 11:58) [16]

> А он вместо этого хватает мышку, и тыкает в меню на "обновить
> данные"... которые успешно обновляются и естественно стирают
> предыдущий.

Ну, если обновляться с клиента, то он может бросить старый файл
в корзину текущего юзера. И искать просто.

--
Regards, LVT.


sniknik   (2011-02-12 11:58:00) [31]

> По идее, я бы и доступа к его корзине не получил бы, если захотел.
Проблема администрирования. Не моя. Пусть настраивают так чтобы доступ был.

> А зачем вдруг корзина?
Чтобы ЦТО не следить за этим делом, мне не делать и не описывать новую "фичу", ради инфы что раз в год/два, и то может быть.
Собственно, идея не моя, а ЦТО, и возникла по глупости...

В общем дело было так...
Приходит ЦТО-ник, говорит, я там ошибку у тебя в программе нашел (??? забыл когда они реально что-то находи)... при обновлении данных, говорит
- "ошибка разбора XML тег <br> в строке 1" ну что-то типа того.
- Ну так, ошибка XML! пришел с сервера не XML, а репорт об ошибке php, судя по тегу (php их под html форматирует). Посмотри сам, убедись, да и все.
- Нет, пошли покажу.
- Ну пошли.
Пришли
- Смотри файл.
А он вместо этого хватает мышку, и тыкает в меню на "обновить данные"... которые успешно обновляются и естественно стирают предыдущий. Типа хотел показать ошибку "в живую"... Ну вот, ошибкам в логах (косвенным) по какой причине файл не разобрался он не доверяет, то что тестовый сервер временами сбоит потому, что там что то тестят он сомневается, файл когда можно было не посмотрел, но вместо того чтобы признаться, что сглупил
- а что оно у тебя сразу удаляет? Почему не в корзину?
И главное написал заявку. А мне проще, сделать чем доказывать, что некоторым нужно чуть быстрее думать, и чуть медленнее руки "распускать".

Кстати этот перенос в корзину не основное действие, будет по настройке в ini, основное так и останется безусловное удаление.


Leonid Troyanovsky   (2011-02-12 09:50:00) [32]


> sniknik ©   (11.02.11 16:47)  

> Написал функцию -
> function ToTrash(const Names: string): integer;

А зачем вдруг корзина?
Сделал бы контейнер для сервисных отходов.

--
Regards, LVT.


KilkennyCat   (2011-02-12 01:51:00) [33]


> если сервис стартовать от того под кем зашел

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


sniknik   (2011-02-12 01:26:00) [34]

> то в корзину пользователя не упадет при всем желании.
Падает, если сервис стартовать от того под кем зашел. Дома получилось (хотя этого мне как раз и не надо, только ради проверки, наоборот хорошо, если будет "спрятано", главное знать где). Почему на работе не получалось вопрос... теперь то "задним умом" думаю, что там 2 моих одноименных юзера, локальный и доменный, потому и не находился. А думал, что не работает.


KilkennyCat   (2011-02-12 01:08:00) [35]

вот, может как-то поможет:
http://www.installsetupconfig.com/win32programming/windowstationsdesktops13_4.html


KilkennyCat   (2011-02-12 00:39:00) [36]

у сервисов сид не зависит от текущего пользователя, насколько я понимаю.
и по идее правильно, что если профиль не загружен, то в корзину пользователя не упадет при всем желании.


Игорь Шевченко   (2011-02-11 22:17:00) [37]

и еще - пользователь, вошедший интерактивно и пользователь, от имени которого запущен сервис - это некоторая разница. Насколько мне известно, в том числе и в загрузке профиля :)


> Пробовал запуск сервиса от имени пользователя под которым
> логинюсь, ставил взаимодействие с рабочим столом


взаимодействие с рабочим столом можно поставить только для запуска с системной учетной записью, AFAIK.


Игорь Шевченко   (2011-02-11 22:07:00) [38]

на всякий случай - у каждого пользователя своя корзина


sniknik   (2011-02-11 22:05:00) [39]

> и загружен ли профиль того пользователя ?
В предыдущем посте второй абзац должен быть под этой ссылкой...

И ++ к этому, я же его (сервис)  под "собой" стартовал, и заходил собой (те профиль был), все одно файла не было. Хотя ладно, теперь ясно, что работает, понятно как, а уж куда оно прячет или ищу не там, разберусь как нибудь.


sniknik   (2011-02-11 21:53:00) [40]

> а какой SID при этом в токене процесса ?
Длинный... ;) Не помню, в домене было дело, юзер "ограниченный админ, под сеть", а сейчас дома и сид от "система" короткий/стандартный.
В понедельник просмотрю "тщательней".

> а какой SID при этом в токене процесса ?
А вот хз. возможно, что и нет на той машине. Там под ним могли только сервис запустить без "входа им в винду".


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо