Почему файл манифеста не имеет никакого эффекта - PullRequest
0 голосов
/ 14 апреля 2020

Я пытался открыть photoshop.exe с помощью C ++, но photoshop.exe.manifest не вступил в силу. Если дважды щелкнуть вручную, чтобы открыть файл photoshop.exe, который показывает нормальную работу.

Реестр установил и перезагрузил систему:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide]
"PreferExternalManifest"=dword:00000001

Может быть, это путь?

photoshop

TCHAR szCommandLineName[200]= _T("Photoshop.exe");
TCHAR szCommandLinePath[200] = _T("F:\\Program Files\\Adobe Photoshop 2020\\");
TCHAR szCommandLine[200] = _T("F:\\Program Files\\Adobe Photoshop 2020\\Photoshop.exe");

TCHAR buf[1000];
GetCurrentDirectory(1000, buf);   
TRACE(_T("Current Directory:%s\n"), buf);

 SetCurrentDirectory(szCommandLinePath);
//::WinExec("F:\\Program Files\\Adobe Photoshop 2020\\Photoshop.exe", SW_SHOW);
//ShellExecuteW(NULL, _T("open"), _T("photoshop.exe.bat"), NULL, szCommandLinePath, SW_SHOWNORMAL);
//return;

// system("photoshop.exe");
// return;
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;

si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESHOWWINDOW;
//si.wShowWindow = SW_HIDE;
si.wShowWindow = TRUE;
BOOL bRet = ::CreateProcess(
    szCommandLine,
    NULL,
    NULL,
    NULL,
    FALSE,  //bInheritHandles
    NULL,   //dwCreationFlags
    NULL,   //lpEnvironment
    NULL,//lpCurrentDirectory
    &si,
    &pi);
int nError = GetLastError();

::CloseHandle(pi.hThread);
::CloseHandle(pi.hProcess);

return ;
...