drem1lin
@drem1lin
чуть программист, чуть чуть админ...

В чем отличие между запусками?

Добрый вечер! Есть код представленный ниже, и он позволяет запустить программу, в данном случае блокнот, от имени администратора, но есть небольшая разница. Если я так запущу программу, то мне откроется блокнот, но редактировать SystemRoot%\system32\drivers\etc\hosts я не смогу. Если я в пуске выберу блокнот и запущу от имени администратора, через правую кнопку, то редактировать этот файл я смогу. В чем разница? И как программно получить поведение, как у "запустить от имени администратора" по правой кнопке.

#include <windows.h>

int WINAPI wWinMain(
    _In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR lpCmdLine,
    _In_ int nShowCmd)
{
    SHELLEXECUTEINFO shExInfo = { 0 };
    shExInfo.cbSize = sizeof(shExInfo);
    shExInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    shExInfo.hwnd = 0;
    shExInfo.lpVerb = TEXT("runas");
    shExInfo.lpFile = TEXT("notepad.exe");       // Application to start    
    shExInfo.lpParameters = TEXT("");                  // Additional parameters
    shExInfo.lpDirectory = 0;
    shExInfo.nShow = SW_SHOW;
    shExInfo.hInstApp = 0;

    ShellExecuteEx(&shExInfo);
}
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kalapanga
Винда небось 64-битная? Тогда блокнот блокноту рознь!
Есть C:\Windows\System32\notepad.exe а есть C:\Windows\SysWOW64\notepad.exe
Какой из них запускает ShellExecuteEx? Если 32-битный, то runas может и не работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы