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);