Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск программы с ограниченными правами, Win2003Server Ent + MSSQL и сетевой диск 
:(
    Опции темы
FreePaul
  Дата 24.2.2005, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.10.2002

Репутация: нет
Всего: нет



Здравствуйте! Возникла следующая проблема:
На Delphi написана программа, одной из функций которой является определение свободного места на сетевом диске. Программа запускается как job из-под MS SQL Server под именем sa (сразу оговорюсь, что я запускал ее и под учетной записью админа машины и под учетной записью админа домена). Проблема вот в чем - если запускать программу обычным способом (двойным щелчком мыши по ней) то она корректно определяет свободное место на сетевом диске. А если она запускается как job из-под MS SQL Server, то всегда выдает, что свободное место =0 (нулю). Путем долгих тыканий выяснено, что скорей всего job'ом программа запускается с ограниченными правами (посмотреть такое можно, если по любому исполняемому файлу щелкнуть правой кнопкой мыши, выбрать пункт "Запускать от имени..." - там всегда по умолчанию отмечена опция "Запускать эту программу с ограниченным доступом".)

Вопрос: есть ли способ стандартными средствами Delphi обойти это ограничение.

P.S. С помощью Jedi пытался запустить программу с правами админа домена (написал launcher) - не помогает...
PM MAIL   Вверх
Bes
Дата 24.2.2005, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



Попробуй запустить джобом дтс пакет а в нем уже запиши старт программы.
PM MAIL   Вверх
FreePaul
Дата 25.2.2005, 03:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.10.2002

Репутация: нет
Всего: нет



А поподробнее нельзя? ДТС - это Data Transformation Services? Как туда вписать запуск программы? smile
PM MAIL   Вверх
Bes
Дата 25.2.2005, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



Выбираешь Local Package -> New Package
Добавляешь туда Execute Process task - туда пишешь путь к экзешнику.
Все.
PM MAIL   Вверх
FreePaul
Дата 28.2.2005, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.10.2002

Репутация: нет
Всего: нет



Не помогло... Если в самом ЕМ выбираю команду Execute step - все работает, а по щедулеру - нет... smile
PM MAIL   Вверх
Bes
Дата 28.2.2005, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



Хм... Может проблема в том, как твое приложение возвращает результат?
У тебя программа как работает, в каком виде возвращает результат?
PM MAIL   Вверх
FreePaul
Дата 28.2.2005, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.10.2002

Репутация: нет
Всего: нет



Сначала определяю свободное место на сетевом диске:
Код

GetDiskFreeSpaceEx(PChar(DBDestJvDirectoryEdit.Text), FreeBytesAvailableToCaller, Totalsize, @FreeSize);


Затем действуем в зависимости от того, хватает ли свободного места:
Код

//Если места не хватает, выходим из программы
if ((FreeBytesAvailableToCaller div 1024) div 1024)<StrToInt(NeedFreeSpaceEdit.Text+'000') then
   begin
    //***Сюда можно вставить отправку сообщения
    MyMess:=' Не хватает места для копирования бэкапа. Необходимо '+NeedFreeSpaceEdit.Text+'000, есть - '+IntToStr((FreeBytesAvailableToCaller div 1024) div 1024);
    WinExec(PChar('net send '+LocalIPLabel.Caption+MyMess), SW_HIDE);
    //Application.MessageBox(PChar(MyMess), '111', 1);
    GoTo ErrExit;
   end;


И вот тут-то и начинается... Если я запускаю программу ручками - определяет место, и все ОК, но если я ее ставлю в джоб, выдает, что свободного места - 0. smile
PM MAIL   Вверх
Bes
Дата 28.2.2005, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



Я бы для начала упростил программу до одной строчки типа
ShowMessage(GetDiskFreeSpaceEx(PChar(DBDestJvDirectoryEdit.Text), FreeBytesAvailableToCaller, Totalsize, @FreeSize));
и так попробовал.
А вообще, закралось у меня подозрение, что это мистика и приложение запускается в каком-то своем пространстве... :-)
Попробую у себя, потом отвечу.
PM MAIL   Вверх
FreePaul
Дата 9.3.2005, 04:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 22.10.2002

Репутация: нет
Всего: нет



Цитата(Bes @ 28.2.2005, 08:58)
А вообще, закралось у меня подозрение, что это мистика и приложение запускается в каком-то своем пространстве... :-)
Попробую у себя, потом отвечу.

У меня то же подозрение... Все дело в том, что если через ShowMessage выдавать инфу, то прграмма висит в памяти сервера (ее видно в лиспетчере задач) но сообщение не выдает. Только через Net Send.

Не пробовал у себя?

PM MAIL   Вверх
Bes
Дата 9.3.2005, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



А у меня код не откомпилировался. Видимо, ты используешь какие-то юзесы, которые не написал в коде.
У меня есть приложения которые обрабатывают таблицы и запускаются из дтс-пакета - все работает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0779 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.