Russian Qt Forum
Май 06, 2024, 09:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: QProcess и возможность запуска приложения только из него  (Прочитано 11946 раз)
arty_57
Гость
« : Февраль 07, 2012, 19:26 »

Подскажите пожалуйста как реализовать возможность запуска приложения (написанного мною на Qt) ТОЛЬКО из другого приложения (опять же написанного мною на Qt). То есть чтобы при попытке запуска напрямую приложения 2, появлялось сообщение "Запустите сначала приложение 1", и приложение 2 не запускалось.
Я так понимаю смотреть надо в сторону QProcess. Просто запускать приложение через него уже научился.
Заранее спасибо!
Записан
mutineer
Гость
« Ответ #1 : Февраль 07, 2012, 20:37 »

Ну можешь попробовать передавать второму приложению некий секретный параметр комстроки
Записан
Aluman
Гость
« Ответ #2 : Февраль 07, 2012, 20:41 »

Если необходимо кроссплатформенное решение, для этого можно использовать QSharedMemory (http://doc.qt.nokia.com/4.8-snapshot/qsharedmemory.html). Т.е. в первом приложении, при запуске, создавать участок общей памяти с определенным содержимым, а во втором приложении проверять существование этого участка и его содержимое.
Записан
andrew.k
Гость
« Ответ #3 : Февраль 07, 2012, 23:25 »

Ну можешь попробовать передавать второму приложению некий секретный параметр комстроки
Я тоже так делал, т.к. в моей ситуации это катило.
Но если программа запускается не в изолированном окружении, "секретный" параметр легко посмотреть.
Если нужно исключить случайный запуск, то это решение покатит, а если умышленный, то нет.
Вторая программа должна при старте обращаться к первой за разрешением на запуск и, не получив его, завершаться.
Можно использовать, например, сокет либо QSharedMemory как советовал Aluman.
Записан
mutineer
Гость
« Ответ #4 : Февраль 08, 2012, 00:12 »

Ну да, все ж от задачи и степени защиты зависит
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Февраль 08, 2012, 11:01 »

Самый простой вариант - это проверять наличие определенной переменной среды в запускаемом процессе, которая выставляется в запускальщике.
Записан

Qt 5.11/4.8.7 (X11/Win)
andrew.k
Гость
« Ответ #6 : Февраль 08, 2012, 11:51 »

Самый простой вариант - это проверять наличие определенной переменной среды в запускаемом процессе, которая выставляется в запускальщике.
Ну так это ж то же самое, что и с секретным параметром.
Узнать легко.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Февраль 08, 2012, 11:52 »

Самый простой вариант - это проверять наличие определенной переменной среды в запускаемом процессе, которая выставляется в запускальщике.
Ну так это ж то же самое, что и с секретным параметром.
Узнать легко.
Все таки это сложнее, чем с параметром запуска.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
andrew.k
Гость
« Ответ #8 : Февраль 08, 2012, 13:48 »

Самый простой вариант - это проверять наличие определенной переменной среды в запускаемом процессе, которая выставляется в запускальщике.
Ну так это ж то же самое, что и с секретным параметром.
Узнать легко.
Все таки это сложнее, чем с параметром запуска.
А! Флудер!  Смеющийся
"Новая Лада Калина. На 15% лучше... чем ничего."
На сколько процентов сложнее? )
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Февраль 08, 2012, 13:50 »

andrew.k, параметры запуска можно посмотреть в диспетчере задач, а для просмотра переменных сред процесса, нужно отдельное ПО.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
andrew.k
Гость
« Ответ #10 : Февраль 08, 2012, 13:56 »

andrew.k, параметры запуска можно посмотреть в диспетчере задач, а для просмотра переменных сред процесса, нужно отдельное ПО.
Диспетчер задач стандартный не показывает параметры запуска. По крайней мере в ХР.

есть setenv. Он устанавливает переменную окружения. для всех (?)
А как задавать переменную среды для конкретного процесса? И как ее считать из другого, если она определена только в первом?
Записан
mutineer
Гость
« Ответ #11 : Февраль 08, 2012, 14:01 »

А как задавать переменную среды для конкретного процесса? И как ее считать из другого, если она определена только в первом?

Если говорить про линкусы, то переменная окружения ставится для текущей консольной сессии. Процесс, запускаемый через QProcess, запускается в той же сессии и эту переменную тоже видит. Другие приложения (запущенный из других консолей) эту переменную не увидят
Записан
andrew.k
Гость
« Ответ #12 : Февраль 08, 2012, 14:06 »

А как задавать переменную среды для конкретного процесса? И как ее считать из другого, если она определена только в первом?

Если говорить про линкусы, то переменная окружения ставится для текущей консольной сессии. Процесс, запускаемый через QProcess, запускается в той же сессии и эту переменную тоже видит. Другие приложения (запущенный из других консолей) эту переменную не увидят
Ну так значит в той же консоли, я могу ее легко посмотреть.
При необходимости установить и запустить упрямое приложение.
Записан
mutineer
Гость
« Ответ #13 : Февраль 08, 2012, 14:09 »

А как задавать переменную среды для конкретного процесса? И как ее считать из другого, если она определена только в первом?

Если говорить про линкусы, то переменная окружения ставится для текущей консольной сессии. Процесс, запускаемый через QProcess, запускается в той же сессии и эту переменную тоже видит. Другие приложения (запущенный из других консолей) эту переменную не увидят
Ну так значит в той же консоли, я могу ее легко посмотреть.
При необходимости установить и запустить упрямое приложение.

Это если приложение было запущено из консоли явно)) Если же оно запущено кликом по значку или ярлыку или пункту меню, то попасть в консоль приложения уже нельзя
Записан
mutineer
Гость
« Ответ #14 : Февраль 08, 2012, 14:10 »

Этот спор может быть бесконечным, имхо лучше дождаться пока ТС решит какая степень защиты ему нужна
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.059 секунд. Запросов: 22.