Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Возвращает идентификатор модели пользователя приложения для указанного процесса.
Синтаксис
LONG GetApplicationUserModelId(
[in] HANDLE hProcess,
[in, out] UINT32 *applicationUserModelIdLength,
[out] PWSTR applicationUserModelId
);
Параметры
[in] hProcess
Дескриптор процесса. Этот дескриптор должен иметь право доступа PROCESS_QUERY_LIMITED_INFORMATION . Дополнительные сведения см. в разделе Обработка прав на безопасность и доступ.
[in, out] applicationUserModelIdLength
Во входных данных — размер буфера applicationUserModelId в расширенных символах. При успешном выполнении размер используемого буфера, включая признак конца null.
[out] applicationUserModelId
Указатель на буфер, получающий идентификатор модели пользователя приложения.
Возвращаемое значение
Если функция выполняется успешно, она возвращает ERROR_SUCCESS. В противном случае функция возвращает код ошибки. Возможные коды ошибок включают следующие.
| Код возврата | Описание |
|---|---|
|
Процесс не имеет удостоверения приложения. |
|
Буфер недостаточно велик для хранения данных. Требуемый размер задается параметром applicationUserModelIdLength. |
Комментарии
Сведения об ограничениях размера строк см. в разделе Константы идентификаторов.
Примеры
#define _UNICODE 1
#define UNICODE 1
#include <Windows.h>
#include <appmodel.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
int ShowUsage();
void ShowProcessApplicationUserModelId(__in const UINT32 pid, __in HANDLE process);
int ShowUsage()
{
wprintf(L"Usage: GetApplicationUserModelId <pid> [<pid>...]\n");
return 1;
}
int __cdecl wmain(__in int argc, __in_ecount(argc) WCHAR * argv[])
{
if (argc <= 1)
return ShowUsage();
for (int i=1; i<argc; ++i)
{
UINT32 pid = wcstoul(argv[i], NULL, 10);
if (pid > 0)
{
HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
if (process == NULL)
wprintf(L"Error %d in OpenProcess (pid=%u)\n", GetLastError(), pid);
else
{
ShowProcessApplicationUserModelId(pid, process);
CloseHandle(process);
}
}
}
return 0;
}
void ShowProcessApplicationUserModelId(__in const UINT32 pid, __in HANDLE process)
{
wprintf(L"Process %u (handle=%p)\n", pid, process);
UINT32 length = 0;
LONG rc = GetApplicationUserModelId(process, &length, NULL);
if (rc != ERROR_INSUFFICIENT_BUFFER)
{
if (rc == APPMODEL_ERROR_NO_APPLICATION)
wprintf(L"Desktop application\n");
else
wprintf(L"Error %d in GetApplicationUserModelId\n", rc);
return;
}
PWSTR fullName = (PWSTR) malloc(length * sizeof(*fullName));
if (fullName == NULL)
{
wprintf(L"Error allocating memory\n");
return;
}
rc = GetApplicationUserModelId(process, &length, fullName);
if (rc != ERROR_SUCCESS)
wprintf(L"Error %d retrieving ApplicationUserModelId\n", rc);
else
wprintf(L"%s\n", fullName);
free(fullName);
}
Требования
| Требование | Значение |
|---|---|
| Целевая платформа | Windows |
| Header | appmodel.h |
| Библиотека | Kernel32.lib |
| DLL | Kernel32.dll |