Я еще не использую их компилятор clang (длинная история), поэтому мой код не может использовать функции C++17.
(Поскольку это стандарт VCL, я считаю, что CoInitialize запускается автоматически)
Я пытаюсь создать ярлык (кнопку) для открытия «Диспетчера служб IIS» из одного из моих приложений .
Я использую код, который уже много лет работает над созданием открытых приложений, однако он не работает с:
- %windir%\ system32\inetsrv\InetMgr.exe (это взято из ярлыка инструментов администрирования)
- C:\WINDOWS\system32\inetsrv\InetMgr.exe (то же самое, без переменных)
Это код, который я использую. используя:
Код: Выделить всё
void __fastcall TLaunch::OpenApplication ( const AnsiString& Location
, const AnsiString& FileName
)
{
HWND hwnd = NULL;
LPCSTR lpOperation = "open";
LPCSTR lpFile = FileName.c_str();
LPCSTR lpParameters = "";
LPCSTR lpDirectory = Location.c_str();
INT nShowCmd = SW_SHOWNORMAL;
HINSTANCE AppHandle = ShellExecuteA ( hwnd
, lpOperation
, lpFile
, lpParameters
, lpDirectory
, nShowCmd
);
}
// This Does nothing
OpenApplication ( "C:\Windows\system32\inetsrv\"
, "InetMgr.exe"
);
// This also Does nothing (the Administrative tools shortcut does not specify a "Start In")
OpenApplication ( ""
, "C:\Windows\system32\inetsrv\InetMgr.exe"
);
Я также попробовал запустить C:\WINDOWS\system32\inetsrv\InetMgr.exe вручную из CMD, открытого без прав администратора. Приложение отобразилось, поэтому мне не нужно было использовать «runas». Поэтому я немного озадачен тем, почему это не работает через ShellExecuteA. (Как я уже сказал, этот код с радостью открывает другие приложения).
Может ли кто-нибудь пролить свет на то, что я делаю неправильно?
или почему это приложение ведет себя в отличие от всего остального прошу ShellExecuteA открыть?
Может??? это может быть связано с тем, почему у меня возникли проблемы с подписанием приложений с помощью ShellExecuteA?
Открытие приложения – это мой вопрос. Это просто то, что может связаны. Если для подписи приложений я использую файл Signtool.exe, установленный из MS Windows 10 SDK, мне придется использовать сценарий командной строки, аналогичный приведенному ниже
Код: Выделить всё
"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe" sign /a /f "C:\Development\( RESOURCE )\_Certs\V12.pfx" /p "PasswordExample" /d "Company Name : App" /tr "http://timestamp.digicert.com" /td sha256 /fd sha256 /v "R:\(Distribute)\V12.1.1 [24-05]\(2024-05-03)\ACMS V1211.2405 (x86-Distro)\MyApp.exe"
(Я удалил свои попытки подписать код ShellExecute много лет назад, поэтому не могу предоставить неработающие примеры)
Любая помощь которые вы можете предоставить, будут приняты с благодарностью.
С уважением

Подробнее здесь: https://stackoverflow.com/questions/784 ... -an-action