gpt4 book ai didi

delphi - 如何从 delphi 7 应用程序运行 mklink 系统命令 (cmd.exe)

转载 作者:行者123 更新时间:2023-12-01 20:03:34 25 4
gpt4 key购买 nike

在运行时的应用程序中,我想运行命令行 Mklink/d(链接位置)(实际文件/文件夹位置)。

到目前为止我已经:

symLink := PChar('/d C:\Data\'+fileName+' N:\"Database Archives"\'+fileName);

ShellExecute(0, nil, 'Mklink', symLink, nil, SW_SHOWNORMAL);

但我也尝试过:

symLink := PChar('Mklink /d C:\Data\'+fileName+' N:\"Database Archives"\'+fileName);

ShellExecute(0, nil, 'cmd.exe', symLink, nil, SW_SHOWNORMAL);

我的做法正确吗?有没有文档解释 ShellExecute 所需的每个参数?

最佳答案

简单地说,不要这样做。使用 API。它的名字叫CreateSymbolicLink 。传递 SYMBOLIC_LINK_FLAG_DIRECTORY 标志。

这更加健壮,允许您正确报告错误,应对没有 cmd.exe 的系统等。

请注意,创建符号链接(symbolic link)需要提升进程。我相信你已经知道了。还要按照链接文档的描述检查错误。

更广泛地说,您需要重新考虑问题中的具体路径。您无法创建跨卷符号链接(symbolic link)。

关于文档,这些是 Windows 函数。只需在搜索引擎中输入名称,您就会找到 MSDN 文档。

<小时/>

在较旧的 Delphi 中,您需要定义该函数,因为提供的 header 翻译没有该函数。

const
SYMBOLIC_LINK_FLAG_DIRECTORY = $00000001;

function CreateSymbolicLinkA(
lpSymlinkFileName: PAnsiChar;
lpTargetFileName: PAnsiChar;
dwFlags: DWORD
): Boolean; stdcall; external 'kernel32';

function CreateSymbolicLinkW(
lpSymlinkFileName: PWideChar;
lpTargetFileName: PWideChar;
dwFlags: DWORD
): Boolean; stdcall; external 'kernel32';

关于delphi - 如何从 delphi 7 应用程序运行 mklink 系统命令 (cmd.exe),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32503231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com