Как исключить необходимость использования прав администратора при запуске процесса из приложения C++/CLI?
Мое приложение должно запускать процессы для последующего доступа к ним через API. Однако Windows 10 просит для методов запуска процессов права администратора. В противном случае программа работает с ошибкой. Как применять методы запуска процессов без необходимости использования прав администратора?
Первоначальный вариант кода (с сокращениями):
//Функция копирования файлов в папку пользователя
int int_Copy_files(All_box_parametres Box_parametres)
{
// Переменные для работы с объектами SW
SldWorks^ swApp = nullptr;
IPartDoc^ Part;
bool boolstatus;
int longstatus;
int longwarnings;
int swErrors;
int swWarnings;
//Флаг наличия предварительно запущенного SW
bool bool_SW_process_flag;
//Имя запущенного процесса SW
TCHAR szExe[] = L"SldWorks.exe";
//Если SW не запущен, то запускаем
System::Object^ processSW;
if (!IsProcessPresent((wchar_t*)&szExe))
{
processSW = System::Activator::CreateInstance(System::Type::GetTypeFromCLSID(Guid::Parse("{0D825E02-9000-4D82-B4AB-D6BDC2872797}")));
swApp = (SldWorks^)processSW;
swApp->Visible = true;
bool_SW_process_flag = false;
}
return 0;
}
Также я попробовал другой метод, но и он просит права администратора:
Process^ myProcess = gcnew Process();
myProcess->StartInfo->UseShellExecute = false;
myProcess->StartInfo->FileName = "C:\\Program Files\\SolidWorks Corp\\SolidWorks\\SLDWORKS.exe";
myProcess->StartInfo->CreateNoWindow = true;
myProcess->Start();
Ответы (1 шт):
Решение нашлось при использовании другой функции:
ShellExecuteA(NULL, "open", "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\SolidWorks 2013\SolidWorks 2013 x64 Edition.lnk", NULL, NULL, SW_RESTORE);
Эта функция также позволяет запустить конкретную версию приложения.