Я пытаюсь подавить приглашение UA C, используя псевдоним COM - PullRequest
1 голос
/ 11 июля 2020

Windows Explorer запрашивает повышение UA C при попытке скопировать файлы в определенные места, например system32. При нажатии кнопки «Продолжить» повышение уровня происходит в фоновом режиме, когда текущий уровень строгости UA C установлен на предпоследнее значение (Уведомлять только при попытке внести изменения в мой компьютер (по умолчанию)).

У меня есть видел, как другие программы (без цифровой подписи) используют CoGetObject для создания повышенного IFileOperation. Я пытаюсь сделать это в своем приложении, но UA C продолжает запрашивать. Да, код работает, но я хочу получить такой же тихий результат, который получают сторонняя программа и Windows Explorer при получении повышенного IFileOperation. Это мой код. Это C не C ++.

CoInitializeEx(0, COINIT_APARTMENTTHREADED);
BIND_OPTS3 ops = {0};

//Random sized buffer large enough to hold values, THIS IS ONLY FOR TESTING!!
WCHAR clsidName[210],
    monikerName[500];

StringFromGUID2(&CLSID_FileOperation, clsidName, sizeof(clsidName) / sizeof(WCHAR));

StringCchPrintfW(monikerName, sizeof(monikerName) / sizeof(WCHAR), L"Elevation:Administrator!new:%s", clsidName);

ops.dwClassContext = CLSCTX_LOCAL_SERVER;
ops.cbStruct = sizeof(BIND_OPTS3);
IFileOperation ppv;
HRESULT hr = CoGetObject(monikerName, &ops, &IID_IFileOperation, &ppv);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...