Приостановить работу Магазина Windows 10 при запуске

Я пишу инструмент на C ++ для отладки и тестирования развернутых приложений Магазина Windows 10. Одна из проблем, с которыми я столкнулся, заключается в том, что мне нужен способ запуска приложения Store в приостановленном состоянии, чтобы я мог подключить отладчик до его инициализации. Обычный способ, которым я знаю, чтобы сделать что-то подобное, это установить хук на создание процесса в родительском процессе и принудительно пометить созданный процесс для запуска в приостановленном состоянии; однако для Магазина приложений родительский процесс, который создает настоящий процесс приложения, — это svchost.exe, который выполняется на системном уровне и не может быть перехвачен без какого-либо драйвера режима ядра.

Я использую IApplicationActivationManager интерфейс для запуска приложений, и я использую IPackageDebugSettings интерфейс для управления / отладки их после запуска. Есть ли способ приостановить приложение Магазина Windows 10 при его запуске, чтобы не было разрешено выполнить первоначальную инициализацию?

0

Решение

Оглядываясь назад, я почти ответил на свой вопрос в самом вопросе. Чтобы запустить приложение Магазина Windows 10 в приостановленном состоянии, используйте IPackageDebugSettings::EnableDebugging метод для установки исполняемого файла в качестве отладчика. Отлаживаемое приложение запустится автоматически; ответственность за возобновление приложения лежит на отладчике.

То, что я закончил в моем проекте, похоже на это:

// Gets the current application's UserModelId and PackageId from the registry
std::wstring appName = AppUtils::GetApplicationUserModelId();
std::wstring appFullName = AppUtils::GetApplicationPackageId();

HRESULT hResult = S_OK;

// Create a new instance of IPackageDebugSettings
ATL::CComQIPtr<IPackageDebugSettings> debugSettings;
hResult = debugSettings.CoCreateInstance(CLSID_PackageDebugSettings, NULL, CLSCTX_ALL);
if(hResult != S_OK) return hResult;

// Enable debugging and use a custom debugger
hResult = debugSettings->EnableDebugging(appFullName.c_str(), pathToDebugger.c_str(), NULL);
if(hResult != S_OK) return hResult;

// Launch the application
DWORD dwProcessId = 0;
hResult = AppUtils::LaunchApplication(appName, &dwProcessId);
if(hResult != S_OK) return hResult;

/* Do more stuff after the app has been resumed by the debugger */

// Stop debugging the application so it can run as normal
hResult = debugSettings->DisableDebugging(appFullName.c_str());
if(hResult != S_OK) return hResult;

Я написал простую обертку для IPackageDebugSettings а также несколько служебных функций для работы с приложениями Магазина Windows 10 для упрощения всего процесса.

1

Другие решения

В Visual Studio перейдите в свойства вашего проекта. Затем перейдите на вкладку «Отладка» и выберите «Не запускать, а отлаживать мой код при запуске».

Это то, что вы ищете?

0

По вопросам рекламы [email protected]