Почему ShellExecuteA иногда не завершает действие?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему ShellExecuteA иногда не завершает действие?

Сообщение Anonymous »

Я использую RAD Studio C++ Builder.
Я еще не использую их компилятор 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"
Однако, если я запущу это с помощью ShellExecuteA, моим приложениям не будет присвоена цифровая подпись. Если вместо этого я сохраню (точный) текст, который я отправил ShellExecuteA, в пакетный файл и запущу его вручную, никаких ошибок не будет получено, и приложение получит цифровую подпись. Я озадачен.com

(Я удалил свои попытки подписать код ShellExecute много лет назад, поэтому не могу предоставить неработающие примеры)
Любая помощь которые вы можете предоставить, будут приняты с благодарностью.
С уважением :)

Подробнее здесь: https://stackoverflow.com/questions/784 ... -an-action
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему ShellExecuteA иногда не завершает действие?
    Anonymous » » в форуме C++
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Почему ShellExecuteA иногда не завершает действие?
    Anonymous » » в форуме C++
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Почему ShellExecuteA иногда не завершает действие?
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Почему ShellExecuteA иногда не завершает действие?
    Anonymous » » в форуме C++
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Действие, имеющее noHistory, открывает выбор намерения, завершает вызывающее действие
    Anonymous » » в форуме Android
    0 Ответы
    95 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»