Какой «вид» «символической ссылки»? ; -)
Да, и прочитайте символическую ссылку на статью в Википедии выше для команды mklink
;-) Обратные тики (или система) может быть хорошим другом, но обратите внимание:
Параметры безопасности по умолчанию в Windows Vista / Windows 7 запрещают администраторам без прав доступа и всем пользователям, не имеющим прав администратора, создавать символические ссылки. Это поведение можно изменить [с помощью параметра политики безопасности] ....
Счастливого кодирования.
Функция WinAPI CreateSymbolicLink может использоваться напрямую; Я не уверен, что он "страдает" от того же ограничения, что и команда mklink
выше. Однако этот поток указывает, что он все еще действует.
FWIW, это «работает» в Strawberry Perl 5.12. YMMV, я только напечатал это и никогда не использовал это иначе: -)
use Win32::API;
$fn = Win32::API->new(
# Note "A" function, IDK how to use Unicdoe
"kernel32", "BOOLEAN CreateSymbolicLinkA(LPTSTR lpSymlinkFileName, LPTSTR lpTargetFileName, DWORD flags)"
);
unlink("src.txt");
unlink("lnk.txt");
open(FH,">src.txt") or die $!;
close(FH);
print "src.txt exists? " , (-f "src.txt"), "\n";
print "lnk.txt exists? " , (-f "lnk.txt"), "\n";
$hr = $fn->Call("lnk.txt", "src.txt", 0);
print "Result: ", $hr, "\n";
print "lnk.txt exists? ", (-f "lnk.txt"), "\n";
open(FH,">>src.txt") or die $!;
print FH "hello world!\n";
close(FH);
open(FH,"<lnk.txt") or die $!;
print "linked data: ", scalar(<FH>), "\n";
close(FH);
Мои результаты (запускается как "Администратор" - может не работать для "других пользователей" - Не знаю, почему, но мой cmd.exe всегда открывается с повышенными привилегиями):
src.txt exists? 1
lnk.txt exists?
Result:
lnk.txt exists? 1
linked data: hello world!
Список каталогов:
10/22/2011 02:53 PM <DIR> .
10/22/2011 02:53 PM <DIR> ..
10/22/2011 02:54 PM 636 foo.pl
10/22/2011 02:53 PM <SYMLINK> lnk.txt [src.txt]
10/22/2011 02:53 PM 14 src.txt
Я понятия не имею, какие [тонкие] различия могут быть, если таковые имеются, между символическими ссылками NTFS и символическими ссылками "UNIX". Кроме того, вышеприведенный не будет работать до Vista / 2008 - предыдущие версии NTFS не не поддерживают символические ссылки (а предыдущие версии Windows не имеют функции CreateSymbolicLink
).