我的应用程序需要启动进程以便以后通过 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();
使用另一个函数时找到了解决方案:
ShellExecuteA(NULL, "open", "C:\ProgramData\Microsoft\Windows\开始菜单\Programs\SolidWorks 2013\SolidWorks 2013 x64 Edition.lnk", NULL, NULL, SW_RESTORE);
此功能还允许您运行特定版本的应用程序。