Кажется, что нет никакого способа поднять полномочия приложения некоторое время для Вас для выполнения конкретной задачи. Windows должен знать в начале программы, требует ли приложение определенных полномочий и попросит, чтобы пользователь подтвердил, когда приложение выполняет любые задачи что потребность те полномочия. Существует два способа сделать это:
Это два , статьи объясняют в намного большем количестве деталей, как это работает.
то, Что я сделал бы, если Вы не хотите писать противную ctypes обертку для CreateElevatedProcess API, является использованием прием ShellExecuteEx, объясненный в статье Code Project (Pywin32 идет с оберткой для ShellExecute). Как? Что-то вроде этого:
, Когда Ваша программа запускается, она проверяет, имеет ли она Права администратора, если она не делает этого, выполняет себя с помощью приема ShellExecute и сразу выходит, если она делает, она выполняет задачу под рукой.
, Поскольку Вы описываете свою программу как "сценарий", я предполагаю, что это достаточно для Ваших потребностей.
Аплодисменты.
Вы ищете - (void) refreshObject: (NSManagedObject *) объект mergeChanges: (BOOL) флаг, я полагаю.
Это обновит объект с информацией в постоянном хранилище , объединяя изменения, если хотите.
Я бы согласился с предложением Майка и просто посмотрел файл магазина на предмет изменений.
Хотя он может быть не самым эффективным, я успешно использовал - [NSManagedObjectContext reset]
из второго процесса при изменении хранилища. В моем случае код довольно линейный - все, что я делаю, это запускаю запрос на выборку некоторых данных после сброса. Я не знаю, как это будет работать с привязками и сложным пользовательским интерфейсом, но вы можете опубликовать уведомление, чтобы обновить данные вручную, если это не обрабатывается автоматически.
У меня была точно такая же проблема с приложением для iPhone, над которым я работал. В моем случае решение заключалось в установке контекста stalenessInterval на что-то достаточно бесконечно малое (например, 0,5 секунды).