![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В корзину из сервиса... [D7]
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-14 23:28:00) [1]
> KilkennyCat © (14.02.11 22:12) [44]
> можно просто в конце рабочего дня всех расстрелять.
Не забыть бы только.
Виновные уже наказаны.
В лесу.
> Игорь Шевченко © (14.02.11 23:07) [45]
> Это негуманно.
- Зато дёшево, надёжно и практично!
--
Regards, LVT.
Игорь Шевченко (2011-02-14 23:07:00) [2]
> можно просто в конце рабочего дня всех расстрелять.
Это негуманно.
KilkennyCat (2011-02-14 22:12:00) [3]можно просто в конце рабочего дня всех расстрелять.
sniknik (2011-02-14 21:46:00) [4]> что тебе выгоднее.
Мне выгоднее было бы вообще ничего не делать, с примерно тем же результатом. И другой более "старый и мудрый" ЦТО-шник был со мной согласен. Сказал сегодня, "сто лет не нужно было, и еще сто лет не понадобится, а когда понадобится у него корзина выключена будет". Вариант с корзиной кстати "утвердили" "им" удобно, они работают под админскими учетками, запустить он нее службу и иметь удаляемое прямо "в своей корзине" для них пара пустяков. Хотя оказалось при проверке, что у "того товарища" у корзины стоит "безусловное удаление" (после чего и родилась вышеупомянутая фраза). Т.е. даже если бы у меня это было раньше, в описанном в начале темы эпизоде, это бы не помогло.
И да, вспомнил/напомнили почему из логов файл вывели... логи доступны всем на просмотр, прямо из программы (ошибки буде будут смотреть), а в файле данные, товары, цены, наценка... "секретные" данные в общем, не то что бы "перед прочтением съесть", но все же клиенты не хотят разглашать до последнего кассира (хотя они и так знают...). И да, можно было бы сделать отдельную "невидимую всем" ветку логов, спецом под файл (здесь наверняка найдется куча народу знающего "как правельней"), но как решили когда то так и есть.
Anatoly Podgoretsky (2011-02-14 20:03:00) [5]> sniknik (14.02.2011 08:00:40) [40]
Это ты говоришь, а на самом деле паписал, что тебе выгоднее. Это из практики
кстати.
KilkennyCat (2011-02-14 13:12:00) [6]
> "мало ли что ты там в лог понаписал"
мало ли что ты там в корзину поудалял
:)
sniknik (2011-02-14 08:00:00) [7]> Ну и что помешало?
А ты тему читал? ЗАЯВКА! На определенное действие. Мое имхо тут дело десятое.
Мой пост [38], вовсе не значит, что будет сделано так. А с учетом того, что убирали его тоже по каким то причинам(например желанием кого то навязать именно свое решение), то если про них вспомнят... фигня, выльется в очередную проблему. Фактически почти как на дельфимастере...
> А мы им в ответ логи. А с ним трудно поспорить.
А ты тему читал? Логи есть. По действиям/ошибкам. Но ошибка "невозможность разобрать файл по причине ..." <> самому файлу. И "ткнутие носом в грязь" единственное к чему приводит это - "мало ли что ты там в лог понаписал", хотя туда попадает ексепт от IDOM документа "as is".
Германн (2011-02-14 03:11:00) [8]
> p.s. Сам думал, и больше склоняюсь к тому, чтобы восстановить
> его логирование
Ну и что помешало?
Логгирование - наша волшебная палочка!
Нужно только правильно ею пользоваться.
> Плевать, что они скажут. Хотя я догадываюсь... пробурчат
> что-то невразумительное и "спустят на тормозах"
А мы им в ответ логи. А с ним трудно поспорить.
Во-первых "они" там (в логах) ничего не поймут.
А во-вторых всё-таки логи позволяют "ткнуть носом в грязь", если кто-то что-то поймёт.
sniknik (2011-02-13 19:39:00) [9]> Передай, плиз, что тебе завтра скажут цтошники.
Плевать, что они скажут. Хотя я догадываюсь... пробурчат что-то невразумительное и "спустят на тормозах".
Главное заявку не отменят, останется в том виде, что сейчас, т.к. отмена была бы как очередное признание того, что "сглупил", еще раз, а он и первый раз признаться не смог, второй раз и подавно.
p.s. Сам думал, и больше склоняюсь к тому, чтобы восстановить его логирование... самый оптимальный вариант был. Оставляя последний в корне, как сейчас. Не искать то, что хоть как то нужно, и ненужная "история" "с глаз долой" но доступна "на крайняк". И нашим и вашим в общем.
KilkennyCat (2011-02-13 19:15:00) [10]
> sniknik © (13.02.11 18:55) [34]
спасибо.
надо запомнить. а то потом ведь потребуется....
Leonid Troyanovsky (2011-02-13 19:06:00) [11]
> sniknik © (13.02.11 14:36) [28]
> нужно, от них лучше прятать. Спрятать в корзине ничуть не
> хуже других мест... Кто хочет, тот и корзину научится чистить
> не свою, не так уж это и сложно в папку RECYCLER заглянуть.
Ну, дык и прячь до разборок. Только не в корзине.
Они ж тебе ее и предъявят, на предмет чистки.
> Делаешь ярлычек на рабочем столе со стартом следующего -
> %windir%\explorer.exe shell:RecycleBinFolder
> после правой кнопкой мыши по нему и выбрать пункт меню -
> "Запуск от имени".
Передай, плиз, что тебе завтра скажут цтошники.
--
Regards, LVT.
sniknik (2011-02-13 19:00:00) [12]Как понял, запуск RunAs себя же, под текущим юзером, для нужных действий. (параметром передавать). Вполне способ.
sniknik (2011-02-13 18:55:00) [13]http://rouse.drkb.ru/winapi.php#servicenotifyer
Доступ из сервиса к рабочему столу.
sniknik (2011-02-13 18:53:00) [14]> как можно работать с пользовательскими ресурсами из сервиса до загрузки профиля.
Какая разница? Профиля под "локал систем" вообще нет/не загружен... тем не менее корзина его есть... (короткий сид 7 пост. с в папке RECYCLER его сразу видно).
Но вообще это уже твой вопрос... у меня таких задач не стояло, типа из сервиса у текущего юзера/в открытом профиле что-то сделать, хотя у Rouse вроде подобный пример был.
У меня если не настраивается/админится значит нельзя.
KilkennyCat (2011-02-13 17:45:00) [15]ну так оно изначально так работало у тебя...
мне бы вот хотелось посмотреть, как можно работать с пользовательскими ресурсами из сервиса до загрузки профиля.
sniknik (2011-02-13 16:16:00) [16]> я бы помог
Все уже решено, в 4 посте... все остальное в области решений/администрирования/администрирования (т.е. как это будет и будет ли реально сделано) вне компетенции данного (да и вообще) форумов.
KilkennyCat (2011-02-13 15:26:00) [17]
> Но вообще дельфимастер в своем амплуа... обсуждают, что
> угодно, только не тему... по показанному кусочку делают
> глобальные выводы о порочности системы в целом, о том что
> кого удовлетворит, не зная людей и ситуации. ... нда, хоть
> вообще ничего не спрашивай. :(
а ты как хотел? :) привыкать пора.
я бы помог, если б знал как, обычно твои вопросы попадают в категорию "узнать что-то полезное". Но я уже попробовал, там - муть.
sniknik (2011-02-13 14:51:00) [18]> бо корзину надо чистить, т.е., следить за этим, а ее еще поди найди /что сделать, как сделать/.
Делаешь ярлычек на рабочем столе со стартом следующего -
%windir%\explorer.exe shell:RecycleBinFolder
после правой кнопкой мыши по нему и выбрать пункт меню - "Запуск от имени".
Выбираешь того от кого запущен сервис (у нас это специальная "админская" ограниченная учетка).
p.s. тоже мне бином Ньютона.
sniknik (2011-02-13 14:36:00) [19]Тогда уж, проще было бы оставить изначальное логирование этого файла, из под которого его "вывели" как раз по причине бесполезности старой версии (не соответствует текущим данным для возможно проверки которых которые он оставлен), и искать в папках логов сложнее чем в корне программы (сервиса), куда его также специально перевели. (не помню кто, но возможно то самое ЦТО инициировало "вывод")
Теперь из-за одного болвана, совершенно не нужный файл "возносится" в ранг "свято оберегаемого" и под него строится собственная система логирования. (с последующими возможными и постоянными объяснениями клиентам "да да вот этот файл, нет не смотрите на с номерами, вот тот который без, в нем актуальные данные, остальные не нужны", "нет, не может быть, у нас это давно работает, не может не совпадать ...... а зачем вы смотрите в файл номер 10?" и т.д.). Я же говорил ранее тем кому не нужно, от них лучше прятать. Спрятать в корзине ничуть не хуже других мест... Кто хочет, тот и корзину научится чистить не свою, не так уж это и сложно в папку RECYCLER заглянуть...
> Rotate, для любой системы имен
Не для любой, занятые имена "изымаются" из оборота. Что кстати может быть недостатком, т.к. юзер может(вправе) в папке программы сам копию этого/другого файла сделать при установке например, и совпавшим именем которого еще нет... через некоторое время его ждет "удивление".
Т.е. эти файлы придется описать в доке, т.к. они "на виду", и чтобы себя обезопасить от подобных курьезов.
Но вообще дельфимастер в своем амплуа... обсуждают, что угодно, только не тему... по показанному кусочку делают глобальные выводы о порочности системы в целом, о том что кого удовлетворит, не зная людей и ситуации. ... нда, хоть вообще ничего не спрашивай. :(
Anatoly Podgoretsky (2011-02-13 11:03:00) [20]> Leonid Troyanovsky (13.02.2011 08:53:26) [26]
Rotate, для любой системы имен