您正在从Perl 5.37.5查看此文档的版本。这是Perl的开发版本。

目录

名称

Win32-某些Win32 API函数的接口

描述

Win32模块包含访问Win32 API的函数。

Win32函数的字母列表

建议使用Win32;在这些职能之前;然而,为了向后兼容,那些标记为[CORE]的将自动为您执行此操作。

在术语下面的功能描述中Unicode字符串用于指示字符串可能包含系统代码页之外的字符。警告如果核心Perl版本支持通常意味着Perl 5.8.9和更高版本,尽管一些Unicode路径名功能可能在早期版本上工作。

Win32::AbortSystemShutdown(机器)

中止指定机器上的系统关闭(由InitiateSystemShutdown功能启动)。

Win32::内部版本号()

[CORE]返回ActivePerl内部版本号。此函数仅在ActivePerl二进制发行版中可用。

Win32::CopyFile(FROM、TO、OVERWRITE)

[CORE]Win32::CopyFile()函数将现有文件复制到新文件。所有文件信息(如创建时间和文件属性)都将复制到新文件中。然而,它会复制安全信息。如果目标文件已经存在,则只有当OVERWRITE参数为true时才会覆盖该文件。但即使这样也不会覆盖只读文件;你必须先自己解除链接()。

Win32::CreateDirectory(目录)

创建DIRECTORY并在成功时返回真值。如果失败,请检查$^E以获取更多错误信息。

DIRECTORY可能包含系统代码页之外的Unicode字符。创建目录后,可以使用Win32::GetANSIPathName()获取可以传递给系统调用和外部程序的名称。

Win32::CreateFile(文件)

创建FILE并在成功时返回真值。如果失败,请检查$^E以获取更多错误信息。

FILE可能包含系统代码页之外的Unicode字符。创建文件后,可以使用Win32::GetANSIPathName()获取一个可以传递给系统调用和外部程序的名称。

Win32::域名()

[CORE]返回当前perl进程所有者登录到的Microsoft Network域或工作组的名称。必须运行“工作站”服务才能确定此信息。此函数可以在Windows 9x上工作。

Win32::ExpandEnvironmentStrings(字符串)

采用STRING并用其定义的值替换所有引用的环境变量名称。对环境变量的引用采用以下形式%变量名称%在环境中查找VariableName时忽略.Case。如果找不到变量,则将原始%变量名称%文本被保留。具有与以下相同的效果:

$string=~s/%([^%]*)%/$ENV{$1}||“%$1%”/eg

但是,如果尚未通过%ENV将要展开的环境变量分配给,则此函数可能会返回Unicode字符串。对%ENV的访问当前始终使用字节语义。

Win32::格式化消息(错误代码)

[CORE]将提供的Win32错误号(例如,由Win32::GetLastError()返回)转换为描述性字符串。类似于perror(。请注意$^E美元在字符串上下文中使用具有大致相同的效果。

C: \>perl-e“$^e=26;打印$^e;”无法访问指定的磁盘
Win32::FsType()

[CORE]返回当前活动驱动器的文件系统名称(如“FAT”或“NTFS”)。在列表上下文中,它返回三个值:(FSTYPE、FLAGS、MAXCOMPLEN)。FSTYPE是以前的文件系统类型。FLAGS是下表值的组合:

0x00000001支持区分大小写的文件名0x00000002保留文件名的大小写0x00000004支持文件名中的Unicode0x00000008保留和强制ACL0x00000010支持基于文件的压缩0x00000020支持磁盘配额0x00000040支持稀疏文件0x00000080支持重分析点0x00000100支持远程存储0x00008000是压缩卷(例如DoubleSpace)0x00010000支持对象标识符0x00020000支持加密文件系统(EFS)

MAXCOMPLEN是此文件系统上文件名组件(两个反斜杠之间的部分)的最大长度。

Win32::FreeLibrary(HANDLE)

卸载以前加载的动态链接库。此调用后,HANDLE不再有效。请参见加载有关动态加载库的信息。

Win32::GetACP()

返回操作系统的当前Windows ANSI代码页标识符。请参见GetOEMCP()、GetConsoleCP()和GetConsoleOutputCP()。

Win32::GetANSIPathName(文件名)

返回FILENAME的ANSI版本。如果长名称无法在系统代码页中表示,则可能是短名称。

虽然目前尚未实现,但将来此函数可能只会将路径的一部分转换为简短形式的FILENAME。

如果文件系统上不存在FILENAME,或者文件系统不支持短ANSI文件名,则此函数将使用替换字符将Unicode名称转换为系统代码页。

Win32::GetArchName()

不推荐使用此函数。它与$ENV{PROCESSOR_ARCHITECTURE}等效。这可能在Win9X上不起作用。

Win32::获取芯片名称()

返回处理器类型:x86处理器为386、486或586,x64处理器为8664,安腾为2200。对于arm/arm64处理器,该值在Microsoft文档中标记为“Reserved”(未指定,但通常为0),因此最好使用GetChipArch()。由于它返回本机处理器类型,因此即使从64位Windows上运行的32位Perl调用,它也会返回64位处理器类型。

Win32::获取芯片架构()

返回处理器体系结构:0表示x86处理器,5表示arm,6表示安腾,9表示x64,12表示arm64,0xFFFF表示未知体系结构。

Win32::GetConsoleCP()

返回与调用进程关联的控制台使用的输入代码页。要设置控制台的输入代码页,请参阅SetConsoleCP()。请参见GetConsoleOutputCP()、GetACP()和GetOEMCP()。

Win32::GetConsoleOutputCP()

返回与调用进程关联的控制台使用的输出代码页。要设置控制台的输出代码页,请参阅SetConsoleOutputCP()。请参见GetConsoleCP()、GetACP()和GetOEMCP()。

Win32::GetCwd()

[CORE]返回当前活动驱动器和目录。此函数不返回UNC路径,因为此类功能所需的功能在Windows 95下不可用。

如果核心Perl版本支持,如果长路径名无法在系统代码页中表示,则此函数将返回当前目录的ANSI路径名。

Win32::GetCurrentProcessId()

返回当前进程的进程标识符。在进程终止之前,进程标识符唯一地标识整个系统中的进程。

当前进程标识符通常也可以通过预定义的$$变量使用。然而,在fork()仿真下,$$可能包含一个伪进程标识符,该标识符只对Perl kill()、wait()和waitpid()函数有意义。Win32::GetCurrentProcessId()函数将始终返回常规Windows进程id,即使是从伪进程内部调用。

Win32::GetCurrentThreadId()

返回调用线程的线程标识符。在线程终止之前,线程标识符唯一地标识整个系统中的线程。

Win32::GetFileVersion(文件名)

从可执行文件或DLL的VERSIONINFO资源返回文件版本号。这是一个由四个16位数字组成的元组。在列表上下文中,将返回这四个数字。在标量上下文中,它们被连接成由点分隔的字符串。

Win32::GetFolderPath(文件夹[,创建])

返回其中一个Windows特殊文件夹的完整路径名。如果文件夹不存在并且可选的CREATE参数为true,则将创建该文件夹。以下FOLDER常量由Win32模块定义,但仅按需导出:

CSIDL_ADMINTOOLS公司CSIDL_app数据CSIDL_CDBURN_AREA公司CSIDL_COMMON_ADMINTOOLS公司CSIDL_COMMON_APPDATA公司CSIDL_COMMON_DESKTOPDIRECTORY公司CSIDL_COMMON_DOCUMENTS公司CSIDL_COMMON_FAVORITES公司CSIDL_COMMON_MUSIC公司CSIDL_COMMON_PICTURES公司CSIDL_COMMON_PROGRAMS公司CSIDL_COMMON_STARTMENU公司CSIDL_COMMON_STARTUP公司CSIDL_COMMON_模板CSIDL_COMMON_VIDEO公司CSIDL_COOKIES公司CSIDL_桌面CSIDL_桌面目录CSIDL_支持CSIDL_字体CSIDL_库存CSIDL_内部_计算机CSIDL_LOCAL_APPDATA公司CSIDL_MYMUSIC公司CSIDL_描述CSIDL_视频CSIDL_方法CSIDL_个人CSIDL_指纹CSIDL_文件CSIDL_程序CSIDL_PROGRAM_FILES(CSIDL_程序文件)CSIDL_PROGRAM_FILES_COMMON(CSIDL_程序_文件_通用)CSIDL_请求CSIDL_资源CSIDL_资源_本地化CSIDL_SENDTO公司CSIDL_启动菜单CSIDL_启动CSIDL_系统CSIDL_模板CSIDL_WINDOWS公司

请注意,并非所有文件夹都在所有版本的Windows上定义。

请参阅CSIDL常量的MSDN文档,当前可从以下网址获得:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp

如果长名称无法在系统代码页中表示,此函数将返回ANSI文件夹路径。如果需要文件夹名称的Unicode版本,请对Win32::GetFolderPath()的结果使用Win32:∶GetLongPathName()。

Win32::GetFullPathName(文件名)

[CORE]GetFullPathName将FILENAME与当前驱动器和目录名组合在一起,并返回完全限定(也称为绝对)路径名。在列表上下文中,它返回两个元素:(PATH,FILE),其中PATH是完整的路径名组件(包括尾部反斜杠),FILE只是文件名部分。请注意,没有尝试将提供的FILENAME中的8.3组件转换为longname或vice-versa。与Win32::GetShortPathName()和Win32::GetLongPathName。

如果核心Perl版本支持,如果系统代码页中无法表示完整路径名,则此函数将返回ANSI路径名。

Win32::GetLastError()

[CORE]返回调用Win32 API函数生成的最后一个错误值。请注意$^E(美元)在数字上下文中使用的值等于相同的值。

Win32::GetLongPathName(路径名)

[CORE]返回由长名称组件(如果有)组成的PATHNAME的表示形式。结果不一定长于PATHNAME。没有尝试将PATHNAME转换为绝对路径。与Win32::GetShortPathName()和Win32::GetFullPathName。

如果无法在系统代码页中表示,此函数可能会返回Unicode格式的路径名。在将路径传递给系统调用或其他程序之前,请使用Win32::GetANSIPathName()。

Win32::GetNextAvailDrive()

[CORE]返回“<d>:”形式的字符串,其中<d>是第一个可用的驱动器号。

Win32::GetOEMCP()

返回操作系统的当前原始设备制造商(OEM)代码页标识符。请参见GetACP()、GetConsoleCP()和GetConsoleOutputCP()。

Win32::GetOSDisplayName()

返回正在使用的Windows操作系统版本的“市场营销”名称。它返回如下名称(随机样本):

Windows 2000数据中心服务器Windows XP专业版Windows XP Tablet PC版Windows家庭服务器适用于基于安腾的系统的Windows Server 2003 Enterprise EditionWindows Vista旗舰版(32位)Windows Small Business Server 2008 R2(64位)

显示名称描述了本机Windows版本,因此即使在32位Perl上,该函数在64位Windows上运行时也可能返回“Windows…(64位)”名称。

此功能只能用于向用户显示实际操作系统名称;它不应用于确定此系统所属的操作系统的类别。Win32::GetOSName()、Win32::GetOSVersion、Win32::GetProductInfo()和Win32:∶GetSystemMetrics()函数提供基本信息,用于检查某些功能或操作系统版本系列。

Win32::GetOSName()

在标量上下文中,返回正在使用的Win32操作系统的名称。In-list context返回操作系统名称的两元素列表,以及关于特定构建(对于Win9X机器)和已安装的任何服务包的已知版本信息。后者大致相当于GetOSVersion()在列表上下文中返回的第一项。

描述还将包括其他特殊版本的标签,如“R2”、“Media Center”、“Tablet PC”或“Starter Edition”。

在Windows 10/Server半年度通道时代,描述可能包含相关的ReleaseId值,但这只是从内部版本号推断出来的,而不是绝对确定的。

当前操作系统名称的可能值为

WinWin32Win95软件Win98软件WinMe公司WinNT3.51系列WinNT4型Win2000软件WinXP/。净值Win2003(Win2003)WinHomeSvr软件WinVista软件2008年冬季Win7(Win7)Win8(Win8)Win8.1软件Win10(Win10)2016年冬季2019年冬季WinSAC公司

这个例程只是GetOSVersion()的一个简单接口。更具体或要求更高的情况应该使用该选项。另一种选择是使用POSIX::uname(),但后者似乎只报告操作系统家族名称,而不报告特定的操作系统。在标量上下文中,它只返回ID。

名称“WinXP/.Net”仅用于历史原因,以保持Win32模块的向后兼容性。窗户。NET Server在最终版本之前已重命名为Windows 2003 Server,并使用与Windows XP不同的主要/次要版本号。

类似地,名称“WinWin32s”应该是“Win32”,但出于向后兼容的原因,也将其保留为-is。

Win32::GetOSVersion()

[CORE]返回列表(STRING、MAJOR、MINOR、BUILD、ID),其中元素分别是:任意描述性字符串、操作系统的主要版本号、次要版本号、内部版本号和指示实际操作系统的数字。对于ID,Win32的值为0,Windows 9X/Me的值为1,Windows NT/2000/XP/2003/Vista/2008/7的值为2。在标量上下文中,它只返回ID。

ID MAJOR MINOR和BUILD的当前已知值如下:

OS ID主要次要构建Win32 0--Windows 95 1 4 0-Windows 98 1 4 10-Windows Me 1 4 90-Windows NT 3.51 2 3 51-Windows NT 4 2 4 0-Windows 2000 2 5 0-Windows XP 2 5 1-Windows Server 2003 2 5 2-Windows Server 2003 R2 2 5 2-Windows Home Server 2 5 2-Windows Vista 2 6 0-Windows Server 2008 2 6 0-Windows 7 2 6 1-Windows Server 2008 R2 2 6 1-Windows 8 2 6 2-Windows Server 2012 2 6 2-Windows 8.1 2 6 2-Windows Server 2012 R2 2 6 2-Windows 10 2 10 0-Windows Server 2016 2 10 0 14393Windows Server 2019 2 10 0 17677

在Windows NT 4 SP6及更高版本上,此函数返回以下附加值:SPMAJOR、SPMINOR、SUITEMASK、PRODUCTTYPE。

Windows 2003和Windows Home Server的版本号相同;必须使用SUITEMASK字段来区分它们。

Windows Vista和Windows Server 2008的版本号相同;必须使用PRODUCTTYPE字段来区分它们。

Windows 7和Windows Server 2008 R2的版本号相同;必须使用PRODUCTTYPE字段来区分它们。

Windows 8和Windows Server 2012的版本号相同;必须使用PRODUCTTYPE字段来区分它们。

对于现代Windows版本,主要版本号和次要版本号是相同的。PRODUCTTYPE字段必须用于区分Windows 10和Server版本。BUILD字段用于区分Windows Server版本:当前的2016、2019和半年度频道版本。

SPMAJOR和SPMINOR是最新安装的service pack的版本号。(在Windows 10时代,这些是未使用的。)

SUITEMASK是一个位字段,用于标识系统上可用的产品套件。已知位为:

VER_SUITE_SMALLBUSINESS 0x00000001版本VER_SUITE_EENTERPRISE 0x00000002版本VER_SUITE_BACKOFFICE 0x00000004版本VER_SUITE_通信0x00000008VER_SUITE_TERMINAL 0x00000010版本VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020版本VER_SUITE_EMBEDEDNT 0x00000040版本VER_SUITE_DATACENTER 0x00000080VER_SUITE_SINGLEUSERTS 0x00000100版本VER_SUITE_PERSONAL 0x00000200版本VER_SUITE_BLADE 0x00000400版本VER_SUITE_EMBEDED_RESTRICTED 0x00000800版本VER_SUITE_SSECURITY_APPLIANCE 0x00001000(大写)VER_SUITE_STORAGE_SERVER 0x00002000VER_SUITE_COMPUTE_SERVER 0x00004000VER_SUITE_WH_SERVER 0x00008000版本VER_SUITE_MULTIUSERTS 0x00020000版本

此处列出了VER_SUITE_xxx名称,以交叉引用Microsoft文档。Win32模块不为这些常量提供符号名称。

PRODUCTTYPE提供有关系统的其他信息。它应该是以下整数值之一:

1-工作站(NT 4、2000 Pro、XP Home、XP Pro、Vista等)2-域控制器3-服务器(2000服务器、2003服务器、2008服务器等)

请注意,同时也是域控制器的服务器报告为PRODUCTTYPE 2(域控制器),而不是PRODUCTT YPE 3(服务器)。

Win32::GetShortPathName(路径名)

[CORE]返回由短(8.3)路径组件组成的PATHNAME表示形式(如果可用)。对于文件系统没有生成缩写形式的路径组件,返回的路径将使用长形式,因此该函数可能仍会返回包含空格的路径。退换商品未定义当PATHNAME不存在时。与Win32::GetFullPathName()和Win32::GetLongPathName。

Win32::GetSystemMetrics(索引)

检索指定的系统度量或系统配置设置。有关可用INDEX值的引用,请参阅GetSystemMetrics()函数的Microsoft文档。所有系统指标都返回整数值。

Win32::GetProcAddress(实例,PROCNAME)

返回加载库中函数的地址。关于你能用这个地址做什么的信息在时间的迷雾中丢失了。使用Win32::API模块代替此不推荐使用的函数。

Win32::GetProcessPrivileges([PID])

返回对哈希的引用,该哈希包含有关指定进程所持特权的信息。键是权限名称,值是布尔值,指示当前是否启用了给定的权限。

如果省略了可选PID参数,该函数将查询当前进程。

返回值示例:

{SeTimeZonePrivilege=>0,SeShutdownPrivilege=>0,SeUndockPrivilege=>0,SeIncreaseWorkingSetPrivilege=>0,SeChangeNotifyPrivilege=>1}
Win32::GetProductInfo(OSMAJOR、OSMINOR、SPMAJOR和SPMINOR)

检索本地计算机上操作系统的产品类型,并将该类型映射到指定操作系统支持的产品类型。有关参数和返回值的详细信息,请参阅GetProductInfo()函数的Microsoft文档。此功能需要Windows Vista或更高版本。

另请参阅Win32::GetOSName()和Win32::GetOSDisplayName()函数,它们提供此函数返回的数据的更高级别抽象。

Win32::GetTickCount()

[CORE]返回自上次系统引导以来经过的毫秒数。分辨率仅限于系统计时器刻度(WinNT上约为10毫秒,Win9X上约为55毫秒)。

Win32::GuidGen()

创建一个全局唯一的128位整数,可以在分布式设置中用作永久标识符。此函数将返回一个唯一的值,这一点非常确定。在同一个或任何其他系统(无论是否联网)上,任何其他调用都不应返回相同的值。

返回值是根据OLE约定格式化的,是一组带大括号的十六进制数字。例如:

{09531CF1-D0C7-4860-840C-1C8C8735E2AD}
Win32::HttpGetFile(URL,文件名[,IGNORE_CERRT_ERRORS])

使用WinHttp库将URL参数指定的文件下载到FILENAME指定的本地文件。可选的第三个参数(如果为true)表示https连接将忽略证书错误;请在安全的环境中小心使用,例如在使用自签名证书进行本地测试时。

仅支持http和https协议。不支持身份验证。使用4.8.0之前的gcc构建时,该函数不可用,因为WinHttp库不可用。

在标量上下文中返回布尔成功或失败,在列表上下文中,除了返回布尔状态外,还返回第二个值,该值包含与状态相关的消息文本。

如果呼叫失败,Win32::GetLastError()将返回数字错误代码,可能是系统错误、WinHttp错误或由1e9和HTTP状态代码组成的用户定义错误。

标量上下文示例:

打印Win32::GetLastError()除非Win32::HttpGetFile('http://example.com/somefile.tar.gz','.\文件.tgz);

列表上下文示例:

my($ok,$msg)=Win32::HttpGetFile('http://example.com/somefile.tar.gz','.\文件.tgz);如果($ok){打印“成功!:$msg\n”;}其他{打印“失败!:$msg\n”;my$err=Win32::GetLastError();if($err>1e9){printf“HTTP状态:%d\n”,($err-1e9);}}
Win32::InitiateSystemShutdown

(机器、消息、超时、强制关闭、重新启动)

在指定的超时时间间隔内关闭指定的机器,用提供的消息通知用户。如果FORCECLOSE为true,则在不提示用户的情况下强制关闭所有文档,如果REBOOT为true则重新启动计算机。此函数仅适用于WinNT。

Win32::IsAdminUser()

如果当前进程/线程在其安全上下文中运行的帐户属于内置系统域中的本地管理员组,则返回非零;如果不是,则返回0。在Windows Vista上,只有当进程实际以提升的权限运行时,它才会返回非零。退换商品未定义并在发生错误时打印警告。此函数在Win9X上始终返回1。

Win32::IsDeveloperModeEnabled()

如果当前启用了开发人员模式,则返回true。在Windows 10之前的Windows版本上,它总是返回false。

Win32::IsSymlinkCreationAllowed()

如果允许当前进程创建符号链接,则返回true。此函数是Win32::GetProcessPrivileges()和Win32::IsDeveloperModeEnabled()的便利包装。

Win32::IsWinNT()

[CORE]如果Win32子系统是Windows NT,则返回非零。

Win32::IsWin95()

[CORE]如果Win32子系统是Windows 95,则返回非零。

Win32::LoadLibrary(LIBNAME)

将动态链接库加载到内存中并返回其模块句柄。此句柄可以与Win32::GetProcAddress()和Win32::FreeLibrary()一起使用。此函数已弃用。请改用Win32::API模块。

Win32::登录名()

[CORE]返回当前perl进程所有者的用户名。返回值可以是Unicode字符串。

Win32::LookupAccountName(SYSTEM、ACCOUNT、DOMAIN、SID、SIDTYPE)

在SYSTEM上查找ACCOUNT并返回域名、SID和SID类型。

Win32::LookupAccountSID(SYSTEM,SID,ACCOUNT,DOMAIN,SIDTYPE)

在SYSTEM上查找SID并返回帐户名、域名和SID类型。

Win32::消息框(消息[,标志[,标题]])

创建包含MESSAGE的对话框。FLAGS根据下表指定所需的图标和按钮:

0=正常1=确定并取消2=中止、重试和忽略3=是、否和取消4=是和否5=重试并取消MB_ICONSTOP“X”(红色圆圈)MB_ICONQUESTION气泡中的问号黄色三角形中的MB_ICONEXCLAMATION感叹号气泡中的MB_ICONINFORMATION“i”

TITLE指定可选的窗口标题。默认值为“Perl”。

该函数返回所选按钮的菜单id:

0错误1正常2取消3中止4重试5忽略6是7个
Win32::节点名称()

[CORE]返回当前计算机的Microsoft Network节点名。

Win32::OutputDebugString(字符串)

将字符串发送到应用程序或系统调试器以进行显示。如果没有活动的调试器,该函数将不执行任何操作。

或者,可以使用调试查看器用于监视OutputDebugString()输出的应用程序:

http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx

Win32::RegisterServer(库名)

加载DLL LIBRARYNAME并调用函数DllRegisterServer。

Win32::SetChildShowWindow(SHOWWINDOW)

[CORE]设置显示模式由system()启动的子进程(共个子进程)。默认情况下,如果Perl本身不是从控制台运行的,system()将为子进程创建一个新的控制台窗口。调用SetChildShowWindow(0)将使这些新控制台窗口不可见。在没有参数的情况下调用SetChildShowWindow()会将系统()恢复为默认行为。SetChildShowWindow()的返回值是以前的设置或未定义.

以下SHOWWINDOW的符号常量可从Win32模块中获得(但未导出):SW_HIDE、SW_SHOWNORMAL、SW-SHOWMINIMIZED、SW_SHOWMAXIMIZED和SW_SHOW NOCTIVATE。

Win32::SetConsoleCP(ID)

设置与调用进程关联的控制台使用的输入代码页。成功时SetConsoleCP()的返回值为非零,失败时为零。要获取控制台的输入代码页,请参阅GetConsoleCP()。

Win32::SetConsoleOutputCP(ID)

设置与调用进程关联的控制台使用的输出代码页。成功时SetConsoleOutputCP()的返回值为非零,失败时为零。要获取控制台的输出代码页,请参阅GetConsoleOutputCP()。

Win32::SetCwd(NEWDIRECTORY)

[CORE]设置当前活动驱动器和目录。此函数不适用于UNC路径,因为此类功能所需的功能在Windows 95下不可用。

Win32::SetLastError(错误)

[CORE]将最后遇到的错误的值设置为error。这是Win32::GetLastError()函数将返回的值。

Win32::睡眠(时间)

[CORE]暂停时间毫秒。时间片可用于其他进程和线程。

Win32::生成(命令、ARGS、PID)

[CORE]使用提供的COMMAND生成一个新进程,在字符串ARGS中传递参数。新进程的pid存储在pid中。此函数已弃用。请改用Win32::Process模块。

Win32::注销服务器(LIBRARYNAME)

加载DLL LIBRARYNAME并调用函数DllUnregisterServer。

CAVEATS(洞穴)

短路径名称

在许多情况下,现代Windows系统将不具备短路径名称(也称为8.3或MS-DOS)长文件名的别名。

短路径支持可以通过注册表在系统范围内配置,但现代系统上的默认设置是配置每个卷的短路径使用量。可以通过多种方式查询卷的配置,但这些方式可能不可靠或需要提升的(管理员)权限。

通常,可以使用系统实用程序实用程序,例如。fsutil 8dot3名称查询d:。在C级,可以使用FSCTL_QUERY_PERSISTENT_VOLUME_STATE公司请求设备IO控制API调用,如中所述这篇文章但是,这两种方法都需要管理员权限才能工作。

Win32模块不执行任何逐卷检查,只是以与它使用的基础Windows API调用相同的方式获取短路径名:如果禁用短路径名,调用仍会成功,但实际会返回长路径名。

请注意,在发生这种情况的卷上,获取ANSIPathName通常不能用于为包含unicode字符的文件返回有用的文件名。(在代码页65001中,这可能仍然有效。)以这种传统方式处理unicode文件名依赖于获取短路径名称返回8.3个文件名,但不支持短名称,它将返回所有unicode字符都被问号字符替换的文件名。