использование contentOffset - неправильный путь. это было бы лучше, поскольку это естественный способ представления таблицы
tableView.scrollToRow(at: NSIndexPath.init(row: 0, section: 0) as IndexPath, at: .top, animated: true)
Я думаю функция RegisterApplicationRestart Win32 API может быть тем, что вам нужно, это часть API Restart Manager.
Простой способ - добавить запись в следующий раздел реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
Просто создайте значение, содержащее путь к вашему приложению (необязательно, включая аргументы командной строки). Приложение будет запущено при следующем запуске, после чего значение будет удалено.
Если у вас Windows Vista или Windows 7, вы можете использовать API управляемого перезапуска и восстановления. Ссылки на этой странице также указывают на некоторые полезные записи в блоге
http://channel9.msdn.com/posts/DanielMoth/Windows-Vista-Restart-amp-Recovery-APIs-from-managed-code/
Шаг 1. Найдите способ отличить запускаемый Windows перезапуск от стандартного. Одним из решений может быть попытка предварительной обработки сообщений . Они, вероятно, отличаются для перезапуска, запускаемого Windows ... или, по крайней мере, они есть в Vista в некоторых случаях: /
Шаг 2: Если вы обнаружите, что это перезапуск, запускаемый Windows, добавьте запланированную одноразовую задачу .