无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5674|回复: 16
打印 上一主题 下一主题

找到vista中建立符号链接的工具(含源码)

[复制链接]
跳转到指定楼层
1#
发表于 2007-12-3 19:27:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
找到vista中建立符号链接的工具(含源码)

不知道,在xp中的ntfs能否使用 大家测测看 我这没ntfs格式的说

mklink.zip

161.42 KB, 下载次数: 300, 下载积分: 无忧币 -2

2#
发表于 2007-12-3 19:44:46 | 只看该作者
什么叫符号链接?
回复

使用道具 举报

3#
 楼主| 发表于 2007-12-3 19:52:12 | 只看该作者
原帖由 123 于 2007-12-3 07:44 PM 发表
什么叫符号链接?

说说有点费劲  直接google一下吧

将简单点就是符号链接是一个特殊的文件
系统会把它当成符号链接所指文件本身
由于不是直接复制文件 故省磁盘空间的说

要是我们的PE能使用上这技术的说 就不再需要将文件copy到system或system32了
回复

使用道具 举报

4#
发表于 2007-12-3 19:55:42 | 只看该作者
有源码就交给123MM搞定它
回复

使用道具 举报

5#
发表于 2007-12-3 20:14:51 | 只看该作者
测试可以建立,但是文件不能用。

1.JPG (30.95 KB, 下载次数: 37)

1.JPG
回复

使用道具 举报

6#
发表于 2007-12-3 20:17:47 | 只看该作者
以前试过几个这样的工具,好象都要求链接到空目录或不存在的目录中,如 SYSTEM32 目录不是空目录,链不上。
回复

使用道具 举报

7#
发表于 2007-12-3 20:38:30 | 只看该作者
原帖由 沙漠之子 于 2007-12-3 07:27 PM 发表
找到vista中建立符号链接的工具(含源码)

不知道,在xp中的ntfs能否使用 大家测测看 我这没ntfs格式的说

看了一下源代码,这个不是vista中的mkilink,否则楼主哪能这么容易搞到vista的部分源代码。
看了一下作者的名字,很熟悉,似乎是当年写hdcopy的那个人。他是德国人,所以代码注释全是德文。
回复

使用道具 举报

8#
 楼主| 发表于 2007-12-3 20:42:01 | 只看该作者
我这建立不了
用vdm建立一ntfs镜像并加载之
运行I:\mklink.exe /s A:\WXPE\PE_IN.INI a:\1.txt
输出
Created link A:\WXPE\PE_IN.INI -> [a:\1.txt].

WARNING! The symbolic link can not be used on this computer,
because it does not run Windows Vista or newer. However, if
you upgrade your computer or will use this volume on Vista
or a newer OS, this symbolic link will become available.


Link target         : A:\WXPE\PE_IN.INI -> a:\1.txt
Target refers to    : Namespace on this local computer
Display target      : A:\WXPE\PE_IN.INI -> a:\1.txt
Type of link        : File symbolic link
回复

使用道具 举报

9#
发表于 2007-12-3 20:43:01 | 只看该作者
编译不通过,缺少文件
fatal error C1083: Cannot open include file: 'strsafe.h': No such file or directory
回复

使用道具 举报

10#
 楼主| 发表于 2007-12-3 20:50:37 | 只看该作者
原帖由 123 于 2007-12-3 08:43 PM 发表
编译不通过,缺少文件
fatal error C1083: Cannot open include file: 'strsafe.h': No such file or directory

看样子,辛苦123MM一下,与原作者联系一下了
回复

使用道具 举报

11#
 楼主| 发表于 2007-12-3 20:54:19 | 只看该作者
回复

使用道具 举报

12#
发表于 2007-12-3 21:01:48 | 只看该作者
这个命令要求在vista上才能使用,vista中自己有mklink,还要他干吗?

2k/xp中可以用junction
http://www.microsoft.com/technet ... dDisk/Junction.mspx
回复

使用道具 举报

13#
 楼主| 发表于 2007-12-3 21:11:20 | 只看该作者
原帖由 fujianabc 于 2007-12-3 09:01 PM 发表
这个命令要求在vista上才能使用,vista中自己有mklink,还要他干吗?

2k/xp中可以用junction
http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx

似乎,不能对文件进行操作吧 只能对文件夹进行操作的说

原理是不一样的
回复

使用道具 举报

14#
发表于 2007-12-3 21:21:14 | 只看该作者
原帖由 沙漠之子 于 2007-12-3 09:11 PM 发表

似乎,不能对文件进行操作吧 只能对文件夹进行操作的说

原理是不一样的

原来是这么回事,那你是想做文件的软连接还是硬连接?
回复

使用道具 举报

15#
发表于 2007-12-3 21:42:54 | 只看该作者
原帖由 沙漠之子 于 2007-12-3 09:11 PM 发表

似乎,不能对文件进行操作吧 只能对文件夹进行操作的说

原理是不一样的


XP自带的工具fsutil.exe可以对文件建立硬连接,但是只在一个卷内有效。
回复

使用道具 举报

16#
发表于 2007-12-3 22:01:39 | 只看该作者
一:Windows 下创建硬链接,只能适用于 NTFS 文件系统。使用命令 fsutil hardlink

语法
fsutil hardlink create NewFileName ExistingFileName

参数
create 建立现有文件和新文件之间的 NTFS 硬链接。NTFS 硬链接与 POSIX 硬链接相似。

NewFileName 指定要将创建硬链接的文件。

ExistingFileName 指定要从中创建硬链接的文件。

如果你想在自己的程序里创建硬链接,那也是很容易的,只需要一个很简单的 API 函数:

BOOL CreateHardLink(
LPCTSTR lpFileName,
LPCTSTR lpExistingFileName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

适用于 Win2000 及以上版本的系统,前两个参数的意思就不用解释了,最后一个参数的用途暂时保留,必须为 NULL。

二:Windows 下创建软链接,NTFS 只支持对目录的软链接,微软把它称作 junction。
但是对于文件的软链接,微软也有提供解决方案,那就是快捷方式(Shortcut,.lnk 文件)。不过软链接和快捷方式不是一个层次上的东西,前者是底层文件系统的功能,后者是应用层的功能。Windows 下目录的快捷方式用 dir 看起来是个文件。

http://www.microsoft.com/technet ... dDisk/Junction.mspx 下载 junction.exe。junction 的命令语是:

junction LinkDirectory ExistingDirectory

例如:junction d:\link c:\winnt

将为c:\winnt 建立一个链接目录 d:\link,C和D分区都要是 NTFS 格式,在资源管理器和 dir 列示中 d:\link 都以目录的面目存在的。d:\link 就像是 c:\winnt 的一个引用一般,删除 d:\link 目录中的内容也就是删除了 c:\winnt 中的内容,但删除 d:\link 本身是不会影响到 c:\winnt 的。

相应的,在程序中也有一个 API 函数 CreateSymbolicLink 支持创建软链接,不过来得太晚了,要 Windows VISTA 和 Windows Server 2008 那样的版本才支持,先还是别想了,API 原型是:

BOOL WINAPI CreateSymbolicLink(
__in LPCWSTR lpSymlinkFileName,
__in LPCWSTR lpTargetFileName,
__in DWORD dwFlags
);

参数:
lpSymlinkFileName 要创建的符号链接名称.

lpTargetFileName 符号链接所对应目标的名称.

dwFlags 标识目标是文件还是目录. 取值0x0 代表是文件,SYMBOLIC_LINK_FLAG_DIRECTORY或0x1 代表是目录


[ 本帖最后由 lxl1638 于 2007-12-3 10:04 PM 编辑 ]

点评

您这个解释很好。请问以 wim格式启动后的 win2k3 系统为什么无法向系统创建“符号链接”文件,如: linkd c:\soft d:\soft 无法成功创建链接,但是 linkd d:\soft c:\soft 却是可以创建成功的。  详情 回复 发表于 2015-7-14 13:44
回复

使用道具 举报

17#
发表于 2015-7-14 13:44:06 | 只看该作者
lxl1638 发表于 2007-12-3 22:01
一:Windows 下创建硬链接,只能适用于 NTFS 文件系统。使用命令 fsutil hardlink

语法

您这个解释很好。请问以 wim格式启动后的 win2k3 系统为什么无法向系统创建“符号链接”文件,如: linkd c:\soft d:\soft 无法成功创建链接,但是 linkd d:\soft c:\soft 却是可以创建成功的。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-1 11:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表