Это было в моем списке, чтобы попробовать, из моих заметок:
API:
http://msdn.microsoft.com/en-us/library/aa363866(VS.85).aspx
BOOLEAN WINAPI CreateSymbolicLink(
__in LPTSTR lpSymlinkFileName,
__in LPTSTR lpTargetFileName,
__in DWORD dwFlags
);
Некоторые примеры на C #:
http://community.bartdesmet.net/blogs/bart/archive/2006/10/24/Windows-Vista-2D00-Creating-symbolic-links-with-C_2300_.aspx
Пример C ++, это cnp из другой статьи, которую я читал. Я не проверял его, поэтому используйте его с осторожностью.
typedef BOOL (WINAPI* CreateSymbolicLinkProc) (LPCSTR, LPCSTR, DWORD);
void main(int argc, char *argv[])
{
HMODULE h;
CreateSymbolicLinkProc CreateSymbolicLink_func;
LPCSTR link = argv[1];
LPCSTR target = argv[2];
DWORD flags = 0;
h = LoadLibrary("kernel32");
CreateSymbolicLink_func =
(CreateSymbolicLinkProc)GetProcAddress(h,
if (CreateSymbolicLink_func == NULL)
{
fprintf(stderr, "CreateSymbolicLinkA not available\n");
} else
{
if ((*CreateSymbolicLink_func)(link, target, flags) == 0)
{
fprintf(stderr, "CreateSymbolicLink failed: %d\n",
GetLastError());
} else
{
printf("Symbolic link created.");
}
}
}
Сказав это, я бы не стал использовать этот код :-) Я был бы либо склонен форк mklink, либо посмотреть на нативную библиотеку из jruby / jpython (извините, я не могу найти ее, так как мое сетевое соединение ненадежно). Кажется, я вспоминаю, что jruby написал библиотеку, которая упаковывает различные apix-файлы posix в java (похоже на chown, которые необходимы для соответствия ruby, но не являются кроссплатформенными). Эта библиотека используется людьми jpython, которые, кажется, очень довольны ею. Я был бы удивлен, если бы эта библиотека не поддерживала sym link.