Передача 'open' в ShellExecute не открывает файл слов на определенной машине - PullRequest
6 голосов
/ 10 июня 2011

Я использую ShellExecute для открытия файлов.На одной машине среди 2000+ пользователей я не могу открыть файлы документов.документы открываются с помощью Wordpad.

Word 2010 установлен правильно, и при двойном щелчке по файлу из проводника открывается слово правильно, кроме того, документ отображается с правильным значком в проводнике.Обратите внимание, что все остальные файлы работают нормально (например, xls, xlsx, pdf, ...)

Кто-нибудь знает почему?Я checekd и "использовать это приложение для открытия файлов" это проверено.

В коде я проверяю ошибку, и я знаю, что сообщение об ошибке

SE_ERR_ASSOCINCOMPLETE или SE_ERR_NOASSOC

(поскольку в обоих случаях я показываю ошибку "с типом файла не связано приложение", поэтому я не знаю, какая из ошибок есть, я должен отладить на стороне клиента, чтобы увидеть его, но яне думаю, что это так важно в этом случае).

У кого-нибудь есть идея?Это то, что я использую для открытия файла:

ShellExecute(0, 'open', PWideChar(MyFilePath), '', '', SW_SHOWNORMAL);

Примечание: мне кажется, что в реестре Windows для этой машины есть какая-то проблема, это почти новая машина для Windows 7.

ПРИМЕЧАНИЕ для тех, кто голосует за закрытие этого вопроса как «Не по теме»: на самом деле это вопрос к WinAPI: почему этот API-интерфейс не работает так, как ожидалось, когда он работает из проводника?Так что это не по теме, особенно в тегах winapi.

1 Ответ

6 голосов
/ 10 июня 2011

Это только предположение, но я подозреваю, что Explorer использует NULL там, где у вас есть "open". Это может вызвать слегка различное поведение, если в зарегистрированных пользовательских файловых ассоциациях что-то не так. Например, если есть глагол по умолчанию, отличный от «open».

...