переписывал только те, что нужны были: shellExecute() и waitForSingleObject() потому что он используется в shellExecute(), но в конечном счёте реализовал ShellExecute() через System.Diagnostics.Process:
X++:
System.Diagnostics.Process testProcess;
;
new InteropPermission(InteropKind::ClrInterop).assert();
testProcess = System.Diagnostics.Process::Start(path, parameters);
testProcess.WaitForExit();
CodeAccessPermission::revertAssert();
посмотрел на getShortPathName, но неохота сейчас тратить время на исследование, будет время - попробую его переписать, но я сомневаюсь, что соответствующая функция не предоставлена через CLR.
UPD: всё-таки посмотрел быстро, я бы стал копать в сторону System.IO.Path.
Long story short: нужно найти аналог функции в CLR, а он сам разберётся, какая библиотека ему нужна в момент выполнения, 32 или 64