Как запретить исполнение программы

Есть файл который программа постоянно читает и пишет в него, как сделать так, чтобы пока файл занят этой программой, нельзя было бы этот файл открыть на запись из другой программы.

Отслеживать
Rikitikitavi
задан 26 сен 2017 в 2:23
Rikitikitavi Rikitikitavi
2,377 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
А разве винда не закрывает доступ к данному файлу по умолчанию?
26 сен 2017 в 3:13
Обычно надо потрудиться, чтобы это было не так. 🙂
26 сен 2017 в 3:20
В заголовке про запрет чтения, в тексте — про запрет записи. Вы уж определитесь.

26 сен 2017 в 8:40

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

То, что вы хотите, организуется по умолчанию и так. Но если вы уж очень хотите явно указать это — то можно, например, открывать файл с помощью функции _fsopen (по крайней мере в Windows) с флагом _SH_DENYRW в качестве третьего параметра.

Отслеживать
ответ дан 26 сен 2017 в 6:57
215k 15 15 золотых знаков 117 117 серебряных знаков 228 228 бронзовых знаков

Applocker — Запрет на запуск программ

В кратце, под виндой нужно использовать CreateFile с правильными флагами (см. MSDN), по linux есть только джентельмеское соглашение flock , которое тоже работает не везде и не всегда. Если обе программы твои, то можно использовать именованный мьютекс.

Источник: ru.stackoverflow.com

Как запретить диалоговому окну предупреждения остановить выполнение программы Python, которая его контролирует?

Использование Win32GUI и Как дела, Я пишу немного кода Python для автоматизации поиска в базе данных, доступ к которой осуществляется через программу, не имеющую интерфейса для этого. Таким образом, я могу взять строку из списка, а затем ввести ее в поле поиска и нажать «поиск».

Читайте также:
Что такое веб сайт мощный компьютер в сети программа

Однако, когда поиск возвращает более 1000 результатов, программа выдает диалоговое окно с предупреждением, которое является просто уведомлением о количестве результатов, что останавливает выполнение кода Python. Я не могу заставить код пройти мимо строки, в которой он нажимает поиск.

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

LookupButtonlocation = elemstring.find(«Lookup», AuthNameFieldlocation) — 15 #Use Regex search to find handles number_regex = re.compile(‘;(d+);’) AuthNameEdit = int(number_regex.search(elemstring[AuthNameFieldlocation:]).group(1)) LookupButton = int(number_regex.search(elemstring[LookupButtonlocation:]).group(1)) #Input new Author into Edit Field setEditText(AuthNameEdit, «John Campbell») #Click lookup button clickButton(LookupButton)

1 ответы

Я не пользователь WATSUP, но я делаю нечто очень похожее, используя pywinauto — в моем случае я запускаю несколько автоматических тестов, которые открывают различные сторонние программы, которые аналогичным образом вызывают неудобные диалоговые окна с предупреждениями. Немного сложно иметь дело с диалогами, о которых вы не знаете, однако, если вы знаете, какие диалоги появляются, но не при они появляются, вы можете начать обсуждение, чтобы иметь дело только с этими всплывающими окнами. Ниже приведен простой пример того, что я делаю, и использует pywinauto, но вы можете адаптировать подход для WATSUP:

Как запретить запуск программы в Windows 10


import time import threading class ClearPopupThread(threading.Thread): def __init__(self, window_name, button_name, quit_event): threading.Thread.__init__(self) self.quit_event = quit_event self.window_name = window_name self.button_name = button_name def run(self): from pywinauto import application, findwindows while True: try: handles = findwindows.find_windows(title=self.window_name) except findwindows.WindowNotFoundError: pass #Just do nothing if the pop-up dialog was not found else: #The window was found, so click the button for hwnd in handles: app = application.Application() app.Connect(handle=hwnd) popup = app[self.window_name] button = getattr(popup, self.button_name) button.Click() if self.quit_event.is_set(): break time.sleep(1) #should help reduce cpu load a little for this thread

Читайте также:
Как установить программу дежавю

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

#Start the thread quit_event = threading.Event() mythread = ClearPopupThread(‘Window Popup Title’, ‘Yes button’, quit_event) # . # My program does it’s thing here # . # When my program is done I need to end the thread quit_event.set()

Источник: stackovergo.com

avhelp

Для повышения компьютерной безопасности можно запретить работу скриптов (сервер сценариев) и пакетных файлов (bat, cmd). Конечно, нужно учитывать специфику использования компьютера. Отключение скриптов негативно скажется на работе браузера Internet Explorer. Пакетные файлы тоже могут активно использоваться на компьютере. Убедитесь, что на компьютере используются другие браузеры и пользователь не работает с командными файлами.

:: Запрет скриптов

Отключить сервер сценариев (Scripting Host) можно с помощью программы xp-AntiSpy или вручную через Реестр.

Для ручного отключения запустите regedit:

HKLMSoftwareMicrosoftWindows Script HostSettings

Строковый параметр Enabled равный «0» отключает работу скриптов. Чтобы включить измените значение 0 на 1.

:: Отключение обработки пакетных файлов

Для отключения пакетных файлов можно изменить реакцию системы при запуске файлов cmd и bat , например, на открытие таких файлов в Блокноте.

HKEY_CLASSES_ROOTbatfileshellopencom mand

дефолтовое значение параметра «%1» %* меняем на NOTEPAD.EXE %1

HKEY_CLASSES_ROOTcmdfileshellopencom mand

дефолтовое значение параметра «%1» %* меняем на NOTEPAD.EXE %1

Теперь при попытке запуска командных файлов они просто будут открыты в Блокноте.

Читайте также:
Как правильно пользоваться программой car scanner

Далее рассмотрены reg -файлы для автоматизации этих процессов:

Отключение скриптов:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftW indows Script HostSettings]
«Enabled»=dword:00000000

Включение скриптов:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftW indows Script HostSettings]
«Enabled»=dword:00000001

Отключение командных файлов:

Windows Registry Editor Version 5.00

Включение командных файлов:

Windows Registry Editor Version 5.00

Источник: avhelp.livejournal.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru