Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Windows
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2015, 11:04   #1
Mentor
 
Регистрация: 08.09.2015
Сообщений: 4
По умолчанию Запуск от имени другого пользователя (программное отключение защиты)

Добрый день.

На работе столкнулись с проблемой, что программа не может получить пакеты данных с командами по COM соединению в случае, если запущена как от другого пользователя с выставленным параметром "Защитить компьютер от несанкционированных действий этой программы". При этом сама программа вызывается из другого приложения. В XP всё нормально работает, если утилиту обмена данными по COM запустить отдельно (без приложения, которое её должно открыть). Вопрос, можно ли как-то из программы через WinApi функции снять этот флаг защиты? По идее за него отвечает какая-то запись в реестре,но какая?
Mentor вне форума Ответить с цитированием
Старый 12.10.2015, 11:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Неа. Не в реестре. Достигается это запуском с правами админа. Можешь создать ярлык на программу, в ней выставить галочку запуска с правами админа для всех и будет работать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2015, 11:42   #3
Mentor
 
Регистрация: 08.09.2015
Сообщений: 4
По умолчанию

Пробовали с правами админа, проблема остаётся. Возможно я ввоже в заблуждение, но часть данных передаётся нормально, а в какой-то момент происходит затык. И проявляется он именно при активном параметре защиты.

Последний раз редактировалось Mentor; 12.10.2015 в 11:45.
Mentor вне форума Ответить с цитированием
Старый 12.10.2015, 12:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а, так ты всетки не под семеркой работаешь?
Антивирус стоит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2015, 12:18   #5
Mentor
 
Регистрация: 08.09.2015
Сообщений: 4
По умолчанию

Изначально утилита компилируется в XP, там же тестится. Потом проверяем на работоспособность в семёрке.
Выяснилось, что передача прекращается из-за обращения утилиты к файлу на диске. В этот самый момент Windows видимо блочит команду открытия файла.
Удивительно, что другие приложения так себя не ведут.
Антивирус не активен.
Mentor вне форума Ответить с цитированием
Старый 12.10.2015, 13:15   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А файл, часом, не лежит в Program Files или в какой другой системной папке?

Начните с того, что отключите UAC
waleri вне форума Ответить с цитированием
Старый 12.10.2015, 14:08   #7
Mentor
 
Регистрация: 08.09.2015
Сообщений: 4
По умолчанию

Нет, файл не лежит в системной папке ОС. UAC отключен.

Попробовали через основное приложение вызвать другую утилиту, которая к файлам обращается (правда по COM'у ничего не передаёт). Там функция открытия файла нормально отработала.

Вот что приводит к исключению.
Код:
FS := TFileStream.Create(FileName, fmOpenReadWrite); /// FS у нас типа TFileStream.
Почему именно данная утилита попала в немилость, да ещё и на разных системах не ясно.

Что ещё может блокировать эта "защита компьютера от несанкционированных действий этой программы"?

---
Выяснили, что утилита вызванная приложением открывает файлы, если сделать OpenDialog до открытия.
---
Кусок кода вызывающего приложение.
Код:
private
 shelinfo:TShellExecuteInfoA;
....
....

var
stinf:StartupInfo;
  lpcreationtime,lpKernelTime,lpExitTime,lpUsertime:_filetime;
  hhiinst:HINST;
  hendEx:THandle;

  SI: TStartupInfo;   PI: TProcessInformation;   Exe: String;
  OSver: string;
  ProcID: Cardinal;
begin
  result := -1;
  resultString := '';
  ServerSocket.Active := true;
  GetStartupInfo(stinf);
  try
    with stinf do begin
      wShowWindow := SW_SHOWNORMAL;
      dwFlags := STARTF_USESHOWWINDOW;
    end;
    shelinfo.fMask:=SEE_MASK_NOCLOSEPROCESS;// or SEE_MASK_FLAG_DDEWAIT or SEE_MASK_WAITFORINPUTIDLE;
    shelinfo.Wnd:=0;
    shelinfo.lpVerb:=nil;
    shelinfo.lpFile:=PAnsiChar(execFilepath) ;
    shelinfo.lpParameters:=PAnsiChar(parameters) ;
    shelinfo.lpDirectory:=nil ;
    shelinfo.nShow:=SW_SHOWNORMAL ;
    shelinfo.hInstApp:=hhiinst ;
    shelinfo.hProcess:=hendEx ;
    shelinfo.cbSize:=sizeof(shelinfo);
    ShellExecuteEx(@shelinfo);
В общем обошли проблему. Перед открытием файла сделали приравнивание пути к свойству OpenDialog.FileName:=FileName (на этом использование диалога началось и закончилось), а потом
FS := TFileStream.Create(FileName, fmOpenReadWrite);
Бред полный, но так работает.

Спасибо всем, кто пытался помочь.

Последний раз редактировалось Stilet; 12.10.2015 в 16:22.
Mentor вне форума Ответить с цитированием
Старый 12.10.2015, 17:15   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

тю. у Вас программа, похоже, меняла текущий каталог во время выполнения.
её заносила куда-то, где ей писать нельзя.


скажите, у Вас имя файла FileName
в строке FS := TFileStream.Create(FileName, fmOpenReadWrite);
содержало ПОЛНЫЙ путь?
если нет - то, скорее всего, именно в этом и заключён корень проблемы!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение заголовка окна, запущенного от имени другого пользователя на сервере терминалов ArtyAtWork Общие вопросы Delphi 3 06.10.2011 09:24
Программное отключение функции Светлана87 Microsoft Office Excel 17 09.09.2011 12:26
Запуск программы от имени другого пользователя... EraM Общие вопросы Delphi 3 12.05.2011 11:07
При установке ловушки на клавиатуру зависают приложения, запущенные от имени другого пользователя. _Lamer Visual C++ 2 22.11.2010 10:01
Проблемма: Программное отключение "защиты формы" влияет на скорость выполнения программного кода... StrikeR33 Microsoft Office Word 0 28.05.2008 20:11