如何用Perl for Windows处理$?

ben*_*enc 2 perl

我正在开发一个Perl脚本,它在执行开始时检查root访问权限.

if ($< != 0) {
  print "You need to be root";
  die "  ";
}
Run Code Online (Sandbox Code Playgroud)

如何$<在Windows中进行评估?我搜索谷歌和这里,但找不到答案.

我得到的最接近的是perlvar.它在Windows中有一些特殊变量处理的描述,但不适用于这种情况.

$ <

这个过程真正的uid.(助记符:如果你正在运行setuid,那就是你来自的uid.)你可以使用POSIX :: setuid()同时更改真实的uid和有效的uid.由于更改$ <需要系统调用,请检查$!更改后尝试检测任何可能的错误.

Gab*_*abe 10

在我的Win7中,$<$>始终返回0,不管我是否以管理员身份运行,提高管理员或普通用户的.我认为Perl只是因为Windows上的用户ID不能简单地表示为整数,所以它甚至都没有尝试.

的确,这是源代码(第1073行):

/* Ownership
 *
 * Just pretend that everyone is a superuser. NT will let us know if
 * we don\'t really have permission to do something.
 */

#define ROOT_UID    ((uid_t)0)
#define ROOT_GID    ((gid_t)0)

uid_t
getuid(void)
{
    return ROOT_UID;
}

uid_t
geteuid(void)
{
    return ROOT_UID;
}

gid_t
getgid(void)
{
    return ROOT_GID;
}

gid_t
getegid(void)
{
    return ROOT_GID;
}

int
setuid(uid_t auid)
{
    return (auid == ROOT_UID ? 0 : -1);
}

int
setgid(gid_t agid)
{
    return (agid == ROOT_GID ? 0 : -1);
}
Run Code Online (Sandbox Code Playgroud)