亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tieregistry.pm

?? ARM上的如果你對底層感興趣
?? PM
?? 第 1 頁 / 共 5 頁
字號:
  my $dlen;
  my $sam;
  my $subPath;
    if(  @_ < 1  ||  2 < @_
     ||  2 == @_ && "HASH" ne ref($opts)  ) {
	croak "Usage:  \$obj= ${PACK}->new( \$subKey, { OPT=>VAL,... } );\n",
	      "  options: @new_Opts\nCalled";
    }
    if(  defined($opts)  ) {
      my @err= grep( ! $new_Opts{$_}, keys(%$opts) );
	@err  and  die "${PACK}->new:  Invalid options (@err)";
    }
    $delim= "$opts->{Delimiter}"  if  defined($opts->{Delimiter});
    $delim= $this->Delimiter   if  "" eq $delim;
    $dlen= length($delim);
    $sam= defined($opts->{Access}) ? $opts->{Access} : $this->Access;
    $sam= Win32API::Registry::constant($sam,0)   if  $sam =~ /^KEY_/;
    if(  "ARRAY" eq ref($subKey)  ) {
	$subPath= $subKey;
	if(  "NONE" eq $this->Handle  &&  @$subPath  ) {
	    ( $this, $subPath )= $this->_rootKey( $subPath );
	}
    } elsif(  $delim x 2 eq substr($subKey,0,2*$dlen)  ) {
      my $path= $this->_split( substr($subKey,2*$dlen), $delim );
      my $mach= shift(@$path);
	if(  ! @$path  ) {
	    return $this->_newVirtual( $path, $Registry,
			    {MACHINE=>$mach,DELIM=>$delim,ACCESS=>$sam} );
	}
	( $this, $subPath )= $this->_connect( $mach, $path );
	return wantarray ? () : undef   if  ! defined($this);
	if(  0 == @$subPath  ) {
	    $this->Delimiter( $delim );
	    return $this;
	}
    } elsif(  $delim eq substr($subKey,0,$dlen)  ) {
	( $this, $subPath )= $this->_rootKey( substr($subKey,$dlen), $delim );
    } elsif(  "NONE" eq $this->Handle  &&  "" ne $subKey  ) {
      my( $mach )= $this->Machine;
	if(  $mach  ) {
	    ( $this, $subPath )= $this->_connect( $mach, $subKey );
	} else {
	    ( $this, $subPath )= $this->_rootKey( $subKey, $delim );
	}
    } else {
	$subPath= $this->_split( $subKey, $delim );
    }
    return wantarray ? () : undef   unless  defined($this);
    if(  0 == @$subPath  &&  "NONE" eq $this->Handle  ) {
	return $this->_newVirtual( $this->_Path, $this,
				   { DELIM=>$delim, ACCESS=>$sam } );
    }
  my $self= $this->_open( $subPath, $sam );
    return wantarray ? () : undef   unless  defined($self);
    $self->Delimiter( $delim );
    return $self;
}


sub Open
{
  my $self= shift(@_);
  my $tied=  ref($self)  &&  tied(%$self);
    $self= tied(%$self)  if  $tied;
    $self= $self->new( @_ );
    $self= $self->TiedRef   if  defined($self)  &&  $tied;
    return $self;
}


sub Clone
{
  my $self= shift( @_ );
  my $new= $self->Open("");
    return $new;
}


{ my @flush;

sub Flush
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
  my( $flush )= @_;
    @_  and  croak "Usage:  \$key->Flush( \$bFlush );";
    return 0   if  "NONE" eq $self->Handle;
    @flush= qw( VALUES SUBKEYS SUBCLASSES SUBTIMES MEMBERS Class
		CntSubKeys CntValues MaxSubKeyLen MaxSubClassLen
		MaxValNameLen MaxValDataLen SecurityLen LastWrite PREVIDX )
      unless  @flush;
    delete( @$self{@flush} );
    if(  defined($flush)  &&  $flush  ) {
	return $self->RegFlushKey();
    } else {
	return 1;
    }
}
}


sub _DualVal
{
  my( $hRef, $num )= @_;
    if(  $_SetDualVar  &&  $$hRef{$num}  ) {
	&SetDualVar( $num, "$$hRef{$num}", 0+$num );
    }
    $num;
}


use vars qw( @_RegDataTypes %_RegDataTypes );
@_RegDataTypes= qw( REG_NONE REG_SZ REG_EXPAND_SZ REG_BINARY
		    REG_DWORD_LITTLE_ENDIAN REG_DWORD_BIG_ENDIAN
		    REG_DWORD REG_LINK REG_MULTI_SZ REG_RESOURCE_LIST
		    REG_FULL_RESOURCE_DESCRIPTOR
		    REG_RESOURCE_REQUIREMENTS_LIST );
# Make sure REG_DWORD appears _after_ other REG_DWORD_* items above.
foreach(  @_RegDataTypes  ) {
    $_RegDataTypes{Win32API::Registry::constant($_,0)}= $_;
}

sub GetValue
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    1 == @_  or  croak "Usage:  (\$data,\$type)= \$key->GetValue('ValName');";
  my( $valName )= @_;
  my( $valType, $valData, $dLen )= (0,"",0);
    return wantarray ? () : undef   if  "NONE" eq $self->Handle;
    $self->RegQueryValueEx( $valName, [], $valType, $valData,
      $dLen= ( defined($self->{MaxValDataLen}) ? $self->{MaxValDataLen} : 0 )
    )  or  return wantarray ? () : undef;
    if(  REG_DWORD == $valType  ) {
      my $val= unpack("L",$valData);
	$valData= sprintf "0x%08.8lX", $val   if  $self->DWordsToHex;
	&SetDualVar( $valData, $valData, $val )   if  $self->DualBinVals
    } elsif(  REG_BINARY == $valType  &&  length($valData) <= 4  ) {
	&SetDualVar( $valData, $valData, hex reverse unpack("h*",$valData) )
	  if  $self->DualBinVals;
    } elsif(  ( REG_SZ == $valType || REG_EXPAND_SZ == $valType )
          &&  $self->FixSzNulls  ) {
	substr($valData,-1)= ""   if  "\0" eq substr($valData,-1);
    } elsif(  REG_MULTI_SZ == $valType  &&  $self->SplitMultis  ) {
	## $valData =~ s/\0\0$//;	# Why does this often fail??
	substr($valData,-2)= ""   if  "\0\0" eq substr($valData,-2);
	$valData= [ split( /\0/, $valData, -1 ) ]
    }
    if(  ! wantarray  ) {
	return $valData;
    } elsif(  ! $self->DualTypes  ) {
	return( $valData, $valType );
    } else {
	return(  $valData,  _DualVal( \%_RegDataTypes, $valType )  );
    }
}


sub _ErrNum
{
    # return $^E;
    return Win32::GetLastError();
}


sub _ErrMsg
{
    # return $^E;
    return Win32::FormatMessage( Win32::GetLastError() );
}

sub _Err
{
  my $err;
    # return $^E;
    return _ErrMsg   if  ! $_SetDualVar;
    return &SetDualVar( $err, _ErrMsg, _ErrNum );
}

sub _NoMoreItems
{
    $_NoMoreItems =~ /^\d/
       ?  _ErrNum == $_NoMoreItems
       :  _ErrMsg =~ /$_NoMoreItems/io;
}


sub _FileNotFound
{
    $_FileNotFound =~ /^\d/
       ?  _ErrNum == $_FileNotFound
       :  _ErrMsg =~ /$_FileNotFound/io;
}


sub _TooSmall
{
    $_TooSmall =~ /^\d/
       ?  _ErrNum == $_TooSmall
       :  _ErrMsg =~ /$_TooSmall/io;
}


sub _MoreData
{
    $_MoreData =~ /^\d/
       ?  _ErrNum == $_MoreData
       :  _ErrMsg =~ /$_MoreData/io;
}


sub _enumValues
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
  my( @names )= ();
  my $pos= 0;
  my $name= "";
  my $nlen= 1+$self->Information("MaxValNameLen");
    while(  $self->RegEnumValue($pos++,$name,$nlen,[],[],[],[])  ) {
	push( @names, $name );
    }
    if(  ! _NoMoreItems()  ) {
	return wantarray ? () : undef;
    }
    $self->{VALUES}= \@names;
    1;
}


sub ValueNames
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \@names= \$key->ValueNames;";
    $self->_enumValues   unless  $self->{VALUES};
    return @{$self->{VALUES}};
}


sub _enumSubKeys
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
  my( @subkeys, @classes, @times )= ();
  my $pos= 0;
  my( $subkey, $class, $time )= ("","","");
  my( $namSiz, $clsSiz )= $self->Information(
			    qw( MaxSubKeyLen MaxSubClassLen ));
    $namSiz++;  $clsSiz++;
    while(  $self->RegEnumKeyEx(
	      $pos++, $subkey, $namSiz, [], $class, $clsSiz, $time )  ) {
	push( @subkeys, $subkey );
	push( @classes, $class );
	push( @times, $time );
    }
    if(  ! _NoMoreItems()  ) {
	return wantarray ? () : undef;
    }
    $self->{SUBKEYS}= \@subkeys;
    $self->{SUBCLASSES}= \@classes;
    $self->{SUBTIMES}= \@times;
    1;
}


sub SubKeyNames
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \@names= \$key->SubKeyNames;";
    $self->_enumSubKeys   unless  $self->{SUBKEYS};
    return @{$self->{SUBKEYS}};
}


sub SubKeyClasses
{
  my $self= shift(@_);
    @_  and  croak "Usage:  \@classes= \$key->SubKeyClasses;";
    $self->_enumSubKeys   unless  $self->{SUBCLASSES};
    return @{$self->{SUBCLASSES}};
}


sub SubKeyTimes
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \@times= \$key->SubKeyTimes;";
    $self->_enumSubKeys   unless  $self->{SUBTIMES};
    return @{$self->{SUBTIMES}};
}


sub _MemberNames
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \$arrayRef= \$key->_MemberNames;";
    if(  ! $self->{MEMBERS}  ) {
	$self->_enumValues   unless  $self->{VALUES};
	$self->_enumSubKeys   unless  $self->{SUBKEYS};
      my( @members )= (  map( $_.$self->{DELIM}, @{$self->{SUBKEYS}} ),
			 map( $self->{DELIM}.$_, @{$self->{VALUES}} )  );
	$self->{MEMBERS}= \@members;
    }
    return $self->{MEMBERS};
}


sub _MembersHash
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \$hashRef= \$key->_MembersHash;";
    if(  ! $self->{MEMBHASH}  ) {
      my $aRef= $self->_MemberNames;
	$self->{MEMBHASH}= {};
	@{$self->{MEMBHASH}}{@$aRef}= (1) x @$aRef;
    }
    return $self->{MEMBHASH};
}


sub MemberNames
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \@members= \$key->MemberNames;";
    return @{$self->_MemberNames};
}


sub Information
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
  my( $time, $nkeys, $nvals, $xsec, $xkey, $xcls, $xname, $xdata )=
      ("",0,0,0,0,0,0,0);
  my $clen= 8;
    if(  ! $self->RegQueryInfoKey( [], [], $nkeys, $xkey, $xcls,
				   $nvals, $xname, $xdata, $xsec, $time )  ) {
	return wantarray ? () : undef;
    }
    if(  defined($self->{Class})  ) {
	$clen= length($self->{Class});
    } else {
	$self->{Class}= "";
    }
    while(  ! $self->RegQueryInfoKey( $self->{Class}, $clen,
				      [],[],[],[],[],[],[],[],[])
        &&  _MoreData  ) {
	$clen *= 2;
    }
  my( %info );
    @info{ qw( LastWrite CntSubKeys CntValues SecurityLen
	       MaxValDataLen MaxSubKeyLen MaxSubClassLen MaxValNameLen )
    }=       ( $time,    $nkeys,    $nvals,   $xsec,
               $xdata,       $xkey,       $xcls,         $xname );
    if(  @_  ) {
      my( %check );
	@check{keys(%info)}= keys(%info);
      my( @err )= grep( ! $check{$_}, @_ );
	if(  @err  ) {
	    croak "${PACK}::Information- Invalid info requested (@err)";
	}
	return @info{@_};
    } else {
	return %info;
    }
}


sub Delimiter
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    $self= $RegObj   unless  ref($self);
  my( $oldDelim )= $self->{DELIM};
    if(  1 == @_  &&  "" ne "$_[0]"  ) {
	delete $self->{MEMBERS};
	delete $self->{MEMBHASH};
	$self->{DELIM}= "$_[0]";
    } elsif(  0 != @_  ) {
	croak "Usage:  \$oldDelim= \$key->Delimiter(\$newDelim);";
    }
    $oldDelim;
}


sub Handle
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \$handle= \$key->Handle;";
    $self= $RegObj   unless  ref($self);
    $self->{HANDLE};
}


sub Path
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \$path= \$key->Path;";
  my $delim= $self->{DELIM};
    $self= $RegObj   unless  ref($self);
    if(  "" eq $self->{MACHINE}  ) {
	$delim . join( $delim, @{$self->{PATH}} ) . $delim;
    } else {
	$delim x 2
	  . join( $delim, $self->{MACHINE}, @{$self->{PATH}} )
	  . $delim;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久久久婷婷884 | 亚洲国产另类av| 美女网站色91| 欧美日韩在线播放三区| 国产精品毛片久久久久久| 亚洲国产中文字幕| 成人黄色免费短视频| 欧美肥大bbwbbw高潮| 最新国产成人在线观看| 国产精品一色哟哟哟| 欧美美女一区二区三区| 亚洲欧美日韩国产成人精品影院| 国产精品影视网| wwwwww.欧美系列| 亚洲第一狼人社区| 91久久精品一区二区二区| 国产精品国产三级国产普通话三级| 九九精品一区二区| 精品日韩一区二区三区| 日韩高清不卡在线| 91精品国产综合久久蜜臀| 亚洲美女偷拍久久| 99久久久精品免费观看国产蜜| 久久婷婷综合激情| 国产一区二区三区四| 欧美va在线播放| 激情文学综合网| 欧美成人艳星乳罩| 日本不卡一二三| 日韩情涩欧美日韩视频| 久久99精品久久只有精品| 欧美精品v国产精品v日韩精品| 午夜精彩视频在线观看不卡| 欧美专区亚洲专区| 亚洲高清中文字幕| 在线成人免费视频| 麻豆精品一区二区av白丝在线| 欧美日韩亚洲综合一区| 日本aⅴ精品一区二区三区| 日韩一区二区在线看片| 国产精品18久久久久久vr| 久久久另类综合| 粉嫩蜜臀av国产精品网站| 国产精品黄色在线观看| 欧亚一区二区三区| 美女网站在线免费欧美精品| 久久亚洲二区三区| av不卡免费电影| 亚洲国产中文字幕| 2020国产精品| 91麻豆国产自产在线观看| 亚洲一区二区三区四区的| 欧美日韩在线三区| 九九九精品视频| 中文字幕一区在线观看| 欧美日韩不卡在线| 国产乱色国产精品免费视频| 国产精品国产a| 在线视频中文字幕一区二区| 免费看欧美女人艹b| 中文字幕欧美激情| 欧美午夜精品电影| 国产一区二区三区免费播放| 亚洲三级理论片| 91精品国产aⅴ一区二区| 国产传媒久久文化传媒| 亚洲综合色婷婷| 久久久影视传媒| 欧美午夜精品一区二区蜜桃| 香蕉久久夜色精品国产使用方法| www欧美成人18+| 欧美亚州韩日在线看免费版国语版| 国产综合色视频| 亚洲高清免费在线| 国产精品的网站| 欧美电影免费观看完整版| av电影在线观看一区| 麻豆成人久久精品二区三区红| 亚洲欧美在线aaa| 精品国产乱子伦一区| 在线观看视频一区二区| 国产成人午夜精品影院观看视频 | 大桥未久av一区二区三区中文| 亚洲中国最大av网站| 国产欧美1区2区3区| 91精品国产入口| 欧美中文字幕一区二区三区| 成人免费视频免费观看| 精品一区二区在线播放| 爽好多水快深点欧美视频| 国产精品蜜臀av| 久久综合资源网| 欧美一级理论片| 欧美日韩国产成人在线免费| 91麻豆国产精品久久| 国产一区二区导航在线播放| 日韩va亚洲va欧美va久久| 亚洲欧洲制服丝袜| 国产精品久久久久影院| 国产女同性恋一区二区| 久久免费美女视频| 久久久久久久久久久久久女国产乱| 欧美一区二区三区在线观看视频| 欧美揉bbbbb揉bbbbb| 日本道色综合久久| 日本大香伊一区二区三区| www..com久久爱| heyzo一本久久综合| 成人精品小蝌蚪| av男人天堂一区| www.欧美日韩国产在线| av不卡一区二区三区| 91亚洲男人天堂| 91黄色免费网站| 欧美日韩国产综合一区二区三区 | 在线免费观看不卡av| 色综合久久88色综合天天免费| 成人av高清在线| 99久久99久久免费精品蜜臀| 91麻豆蜜桃一区二区三区| 91首页免费视频| 欧美日韩一卡二卡| 日韩免费一区二区| 久久久久久久久一| 亚洲婷婷在线视频| 亚洲成国产人片在线观看| 日韩精品一级中文字幕精品视频免费观看| 亚洲v中文字幕| 看电视剧不卡顿的网站| 国产电影一区在线| 色狠狠色噜噜噜综合网| 欧美酷刑日本凌虐凌虐| 精品成人佐山爱一区二区| 欧美国产精品专区| 亚洲国产日韩在线一区模特 | 欧美三级视频在线播放| 欧美三级日本三级少妇99| 欧美一区二区不卡视频| 久久精品在线观看| 亚洲欧美日韩成人高清在线一区| 亚洲小说春色综合另类电影| 裸体健美xxxx欧美裸体表演| 成人永久aaa| 欧美美女视频在线观看| 久久久不卡影院| 一区二区三区日韩欧美| 美女国产一区二区| 91网站在线播放| 精品久久久久久综合日本欧美| 国产精品三级电影| 中文字幕第一区第二区| 成人妖精视频yjsp地址| 99久久综合精品| 欧美日韩一区二区电影| 久久只精品国产| 亚洲综合激情另类小说区| 免费观看在线色综合| 91免费看片在线观看| 欧美大胆一级视频| 亚洲乱码国产乱码精品精的特点 | 欧美一区二区三区免费大片 | 欧美mv日韩mv| 亚洲一区二区欧美| 亚洲国产精品久久艾草纯爱| 成人亚洲一区二区一| 欧美性一级生活| 国产日产欧产精品推荐色| 亚洲午夜久久久| 丁香婷婷综合激情五月色| 91精品国产91久久久久久一区二区| 国产精品高潮久久久久无| 日本 国产 欧美色综合| 欧洲国内综合视频| 中文字幕一区二区三区蜜月| 国产在线观看一区二区| 91精品国产手机| 天天色图综合网| 欧洲精品视频在线观看| 亚洲嫩草精品久久| 99热99精品| 国产精品护士白丝一区av| 成人美女视频在线观看| 精品卡一卡二卡三卡四在线| 爽爽淫人综合网网站| 欧美男同性恋视频网站| 亚洲自拍偷拍欧美| 欧美性大战久久久久久久蜜臀| 亚洲欧美色综合| 91浏览器入口在线观看| 亚洲欧洲日韩女同| 日韩va亚洲va欧美va久久| 欧美在线一二三| 亚洲国产精品久久久男人的天堂| 色94色欧美sute亚洲线路一ni| 中文字幕不卡三区| 成人一区二区三区中文字幕| 欧美激情艳妇裸体舞| 国产精品亚洲专一区二区三区| 久久久www成人免费无遮挡大片| 激情六月婷婷综合|