Вызов API для shell32.dll via FindExecutableA возвращает «Не удается найти определенный путь» в UNC-путях

#smalltalk #windows-xp-sp3 #shell32.dll

#smalltalk #windows-xp-sp3 #shell32.dll

Вопрос:

Я выполняю вызов API FindExecutableA (Ansi-версии FindExecutable) через shell32.dll Smalltalk, но когда я отправляю UNC-пути, такие как

 \serverName\sharedFolderfilename
  

он возвращает код ошибки 2, что в основном означает, что система не смогла найти указанный путь.

Странно то, что когда я использую такие пути, как

 \myPcNameC$sharedFolderfilename
  

где C$ общее имя C: на моем компьютере, тогда оно работает.

Я хотел бы заставить его работать для «обычных» UNC-путей, подобных первому, который я написал выше. Система, которую я использую, — Windows XP SP3 и shell32.dll имеет номер версии 6.0.2900.6072

Я безуспешно искал в сети. У кого-нибудь есть какие-либо советы?

Спасибо!

Комментарии:

1. Какой Smalltalk вы используете? Squeak / Pharo? Cincom? Дельфин? Другое?

2. Вы уверены в количестве обратных косых черт в ваших примерах? Пути должны быть \serverNamesharedFolderfilename и \myPcNameC$sharedFolderfilename , верно?

Ответ №1:

Согласно http://msdn.microsoft.com/en-us/library/windows/desktop/bb776419 (v = vs.85).aspx 2 возвращаемый код ошибки FindExecutable : «Указанный файл не найден»

Это означает, что ваши UNC-пути недопустимы, используйте \servernamesharenamedirnamefilename