RmGetList диспетчера перезапуска Windows возвращает ERROR_ACCESS_DENIED, почему?
У меня есть код, который запускает сеанс менеджера перезапуска, затем вызывает RmRegisterResources с несколькими файлами, и когда он вызывает RmGetList, возвращается ERROR_ACCESS_DENIED (5)... Но если я добавлю Sleep для 50 мс, а затем попробуйте снова... Это работает... Как так? Любая идея? Есть ли что-нибудь еще, кроме сна, который можно было бы сделать, чтобы успешно вызвать RmGetList.
2 ответа
Что вы конкретно подразумеваете под "это работает"? Я попытался на файл с "отказано в доступе". Первый вызов RmGetList вернул 5, аргументы не изменились. Даже без сна в промежутке между вторым вызовом вернулось 0, при этом установив pnProcInfoNeeded, pnProcInfo и lpdwRebootReasons в ноль. Таким образом, вы, кажется, не получаете интересную информацию...
Это похоже на ошибку или, по крайней мере, недокументированную функцию.
У меня есть установщик inno setup с собственным вызовом «rstrtmgr.dll». Сбой каждый раз при установке, но успешно один или два раза. явление отказа в доступе похоже на мой случай. Поэтому я предлагаю моему клиенту переустановить все на медленном компьютере.