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

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

?? tieregistry.pm

?? ARM上的如果你對底層感興趣
?? PM
?? 第 1 頁 / 共 5 頁
字號:

sub DELETE
{
  my $self= shift(@_);
  my $ent= shift(@_);
  my $delim= $self->Delimiter;
  my( $key, $val, $ambig, $subkey )= $self->_parseTiedEnt( $ent, $delim, 1 );
  my $sub;
  my $fast= defined(wantarray) ? $self->FastDelete : 2;
  my $old= 1;	# Value returned if FastDelete is set.
    if(  defined($key)
     &&  ( defined($val) || defined($ambig) || defined($subkey) )  ) {
	return wantarray ? () : undef
	  unless  $sub= $self->new( $key );
    } else {
	$sub= $self;
    }
    if(  defined($val)  ) {
	$old= $sub->GetValue($val) || _Err   unless  2 <= $fast;
	$sub->RegDeleteValue( $val );
    } elsif(  defined($subkey)  ) {
	$old= $sub->_FetchOld( $subkey.$delim )   unless  $fast;
	$sub->RegDeleteKey( $subkey );
    } elsif(  defined($ambig)  ) {
	if(  defined($key)  ) {
	    $old= $sub->DELETE($ambig);
	} else {
	    $old= $sub->GetValue($ambig) || _Err   unless  2 <= $fast;
	    if(  defined( $old )  ) {
		$sub->RegDeleteValue( $ambig );
	    } else {
		$old= $sub->_FetchOld( $ambig.$delim )   unless  $fast;
		$sub->RegDeleteKey( $ambig );
	    }
	}
    } elsif(  defined($key)  ) {
	$old= $sub->_FetchOld( $key.$delim )   unless  $fast;
	$sub->RegDeleteKey( $key );
    } else {
	croak "${PACK}->DELETE:  Key ($ent) can never be deleted";
    }
    $old;
}


sub SetValue
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
  my $name= shift(@_);
  my $data= shift(@_);
  my( $type )= @_;
  my $size;
    if(  ! defined($type)  ) {
	if(  "ARRAY" eq ref($data)  ) {
	    croak "${PACK}->SetValue:  Value is array reference but ",
		  "no data type given"
	      unless  2 == @$data;
	    ( $data, $type )= @$data;
	} else {
	    $type= REG_SZ;
	}
    }
    $type= Win32API::Registry::constant($type,0)   if  $type =~ /^REG_/;
    if(  REG_MULTI_SZ == $type  &&  "ARRAY" eq ref($data)  ) {
	$data= join( "\0", @$data ) . "\0\0";
	## $data= pack(  "a*" x (1+@$data),  map( $_."\0", @$data, "" )  );
    } elsif(  ( REG_SZ == $type || REG_EXPAND_SZ == $type )
          &&  $self->FixSzNulls  ) {
	$data .= "\0"    unless  "\0" eq substr($data,0,-1);
    } elsif(  REG_DWORD == $type  &&  $data =~ /^0x[0-9a-fA-F]{3,}$/  ) {
	$data= pack( "L", hex($data) );
	# We could to $data=pack("L",$data) for REG_DWORD but I see
	# no nice way to always destinguish when to do this or not.
    }
    $self->RegSetValueEx( $name, 0, $type, $data, length($data) );
}


sub StoreKey
{
  my $this= shift(@_);
    $this= tied(%$this)  if  ref($this)  &&  tied(%$this);
  my $subKey= shift(@_);
  my $data= shift(@_);
  my $ent;
  my $self;
    if(  ! ref($data)  ||  "$data" !~ /(^|=)HASH/  ) {
	croak "${PACK}->StoreKey:  For ", $this->Path.$subKey, ",\n",
	      "  subkey data must be a HASH reference";
    }
    if(  defined( $$data{""} )  &&  "HASH" eq ref($$data{""})  ) {
	$self= $this->CreateKey( $subKey, delete $$data{""} );
    } else {
	$self= $this->CreateKey( $subKey );
    }
    return wantarray ? () : undef   if  ! defined($self);
    foreach $ent (  keys(%$data)  ) {
	return wantarray ? () : undef
	  unless  $self->STORE( $ent, $$data{$ent} );
    }
    $self;
}


# = { "" => {OPT=>VAL}, "val"=>[], "key"=>{} } creates a new key
# = "string" creates a new REG_SZ value
# = [ data, type ] creates a new value
sub STORE
{
  my $self= shift(@_);
  my $ent= shift(@_);
  my $data= shift(@_);
  my $delim= $self->Delimiter;
  my( $key, $val, $ambig, $subkey )= $self->_parseTiedEnt( $ent, $delim, 1 );
  my $sub;
    if(  defined($key)
     &&  ( defined($val) || defined($ambig) || defined($subkey) )  ) {
	return wantarray ? () : undef
	  unless  $sub= $self->new( $key );
    } else {
	$sub= $self;
    }
    if(  defined($val)  ) {
	croak "${PACK}->STORE:  For ", $sub->Path.$delim.$val, ",\n",
	      "  value data cannot be a HASH reference"
	  if  ref($data)  &&  "$data" =~ /(^|=)HASH/;
	$sub->SetValue( $val, $data );
    } elsif(  defined($subkey)  ) {
	croak "${PACK}->STORE:  For ", $sub->Path.$subkey.$delim, ",\n",
	      "  subkey data must be a HASH reference"
	  unless  ref($data)  &&  "$data" =~ /(^|=)HASH/;
	$sub->StoreKey( $subkey, $data );
    } elsif(  defined($ambig)  ) {
	if(  ref($data)  &&  "$data" =~ /(^|=)HASH/  ) {
	    $sub->StoreKey( $ambig, $data );
	} else {
	    $sub->SetValue( $ambig, $data );
	}
    } elsif(  defined($key)  ) {
	croak "${PACK}->STORE:  For ", $sub->Path.$key.$delim, ",\n",
	      "  subkey data must be a HASH reference"
	  unless  ref($data)  &&  "$data" =~ /(^|=)HASH/;
	$sub->StoreKey( $key, $data );
    } else {
	croak "${PACK}->STORE:  Key ($ent) can never be created nor set";
    }
}


sub EXISTS
{
  my $self= shift(@_);
  my $ent= shift(@_);
    defined( $self->FETCH($ent) );
}


sub FIRSTKEY
{
  my $self= shift(@_);
  my $members= $self->_MemberNames;
    $self->{PREVIDX}= 0;
    @{$members} ? $members->[0] : undef;
}


sub NEXTKEY
{
  my $self= shift(@_);
  my $prev= shift(@_);
  my $idx= $self->{PREVIDX};
  my $members= $self->_MemberNames;
    if(  ! defined($idx)  ||  $prev ne $members->[$idx]  ) {
	$idx= 0;
	while(  $idx < @$members  &&  $prev ne $members->[$idx]  ) {
	    $idx++;
	}
    }
    $self->{PREVIDX}= ++$idx;
    $members->[$idx];
}


sub DESTROY
{
  my $self= shift(@_);
    return   if  tied(%$self);
  my $unload= $self->{UNLOADME};
  my $debug= $ENV{DEBUG_TIE_REGISTRY};
    if(  defined($debug)  ) {
	if(  1 < $debug  ) {
	  my $hand= $self->Handle;
	  my $dep= $self->{DEPENDON};
	    carp "${PACK} destroying ", $self->Path, " (",
		 "NONE" eq $hand ? $hand : sprintf("0x%lX",$hand), ")",
		 defined($dep) ? (" [depends on ",$dep->Path,"]") : ();
	} else {
	    warn "${PACK} destroying ", $self->Path, ".\n";
	}
    }
    $self->RegCloseKey
      unless  "NONE" eq $self->Handle;
    if(  defined($unload)  ) {
	if(  defined($debug)  &&  1 < $debug  ) {
	  my( $obj, $subKey, $file )= @$unload;
	    warn "Unloading ", $self->Path,
	      " (from ", $obj->Path, ", $subKey)...\n";
	}
	$self->UnLoad
	  ||  warn "Couldn't unload ", $self->Path, ": ", _ErrMsg, "\n";
	## carp "Never unloaded ${PACK}::Load($$unload[2])";
    }
    #delete $self->{DEPENDON};
}


use vars qw( @CreateKey_Opts %CreateKey_Opts );
@CreateKey_Opts= qw( Access Class Options Delimiter
		     Disposition Security Volatile Backup );
@CreateKey_Opts{@CreateKey_Opts}= (1) x @CreateKey_Opts;

sub CreateKey
{
  my $self= shift(@_);
  my $tied= tied(%$self);
    $self= tied(%$self)  if  $tied;
  my( $subKey, $opts )= @_;
  my( $sam )= $self->Access;
  my( $delim )= $self->Delimiter;
  my( $class )= "";
  my( $flags )= 0;
  my( $secure )= [];
  my( $garb )= 0;
  my( $result )= \$garb;
  my( $handle )= 0;
    if(  @_ < 1  ||  2 < @_
     ||  2 == @_ && "HASH" ne ref($opts)  ) {
	croak "Usage:  \$new= \$old->CreateKey( \$subKey, {OPT=>VAL,...} );\n",
	      "  options: @CreateKey_Opts\nCalled";
    }
    if(  defined($opts)  ) {
	$sam= $opts->{"Access"}   if  defined($opts->{"Access"});
	$class= $opts->{Class}   if  defined($opts->{Class});
	$flags= $opts->{Options}   if  defined($opts->{Options});
	$delim= $opts->{"Delimiter"}   if  defined($opts->{"Delimiter"});
	$secure= $opts->{Security}   if  defined($opts->{Security});
	if(  defined($opts->{Disposition})  ) {
	    "SCALAR" eq ref($opts->{Disposition})
	      or  croak "${PACK}->CreateKey option `Disposition'",
			" must provide a scalar reference";
	    $result= $opts->{Disposition};
	}
	$result= ${$opts->{Disposition}}   if  defined($opts->{Disposition});
	if(  0 == $flags  ) {
	    $flags |= REG_OPTION_VOLATILE
	      if  defined($opts->{Volatile})  &&  $opts->{Volatile};
	    $flags |= REG_OPTION_BACKUP_RESTORE
	      if  defined($opts->{Backup})  &&  $opts->{Backup};
	}
    }
  my $subPath= ref($subKey) ? $subKey : $self->_split($subKey,$delim);
    $subKey= join( $self->OS_Delimiter, @$subPath );
    $self->RegCreateKeyEx( $subKey, 0, $class, $flags, $sam,
			   $secure, $handle, $$result )
      or  return wantarray ? () : undef;
  my $new= $self->_new( $handle, [ @{$self->_Path}, @{$subPath} ] );
    $new->{ACCESS}= $sam;
    $new->{DELIM}= $delim;
    $new= $new->TiedRef   if  $tied;
    return $new;
}


use vars qw( $Load_Cnt @Load_Opts %Load_Opts );
$Load_Cnt= 0;
@Load_Opts= qw(NewSubKey);
@Load_Opts{@Load_Opts}= (1) x @Load_Opts;

sub Load
{
  my $this= shift(@_);
  my $tied=  ref($this)  &&  tied(%$this);
    $this= tied(%$this)  if  $tied;
  my( $file, $subKey, $opts )= @_;
    if(  2 == @_  &&  "HASH" eq ref($subKey)  ) {
	$opts= $subKey;
	undef $subKey;
    }
    @_ < 1  ||  3 < @_  ||  defined($opts) && "HASH" ne ref($opts)
      and  croak "Usage:  \$key= ",
	     "${PACK}->Load( \$fileName, [\$newSubKey,] {OPT=>VAL...} );\n",
	     "  options: @Load_Opts @new_Opts\nCalled";
    if(  defined($opts)  &&  exists($opts->{NewSubKey})  ) {
	$subKey= delete $opts->{NewSubKey};
    }
    if(  ! defined( $subKey )  ) {
	if(  "" ne $this->Machine  ) {
	    ( $this )= $this->_connect( [$this->Machine,"LMachine"] );
	} else {
	    ( $this )= $this->_rootKey( "LMachine" );	# Could also be "Users"
	}
	$subKey= "PerlTie:$$." . ++$Load_Cnt;
    }
    $this->RegLoadKey( $subKey, $file )
      or  return wantarray ? () : undef;
  my $self= $this->new( $subKey, defined($opts) ? $opts : () );
    if(  ! defined( $self )  ) {
	{ my $err= Win32::GetLastError();
	#{ local( $^E );
	    $this->RegUnLoadKey( $subKey )
	      or  carp "Can't unload $subKey from ", $this->Path, ": $^E\n";
	    Win32::SetLastError($err);
	}
	return wantarray ? () : undef;
    }
    $self->{UNLOADME}= [ $this, $subKey, $file ];
    $self= $self->TiedRef   if  $tied;
    $self;
}


sub UnLoad
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    @_  and  croak "Usage:  \$key->UnLoad;";
  my $unload= $self->{UNLOADME};
    "ARRAY" eq ref($unload)
      or  croak "${PACK}->UnLoad called on a key which was not Load()ed";
  my( $obj, $subKey, $file )= @$unload;
    $self->RegCloseKey;
    Win32API::Registry::RegUnLoadKey( $obj->Handle, $subKey );
}


sub AllowSave
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    $self->AllowPriv( "SeBackupPrivilege", @_ );
}


sub AllowLoad
{
  my $self= shift(@_);
    $self= tied(%$self)  if  tied(%$self);
    $self->AllowPriv( "SeRestorePrivilege", @_ );
}


# RegNotifyChangeKeyValue( hKey, bWatchSubtree, iNotifyFilter, hEvent, bAsync )


sub RegCloseKey { my $self= shift(@_);
    Win32API::Registry::RegCloseKey $self->Handle, @_; }
sub RegConnectRegistry { my $self= shift(@_);
    Win32API::Registry::RegConnectRegistry @_; }
sub RegCreateKey { my $self= shift(@_);
    Win32API::Registry::RegCreateKey $self->Handle, @_; }
sub RegCreateKeyEx { my $self= shift(@_);
    Win32API::Registry::RegCreateKeyEx $self->Handle, @_; }
sub RegDeleteKey { my $self= shift(@_);
    Win32API::Registry::RegDeleteKey $self->Handle, @_; }
sub RegDeleteValue { my $self= shift(@_);
    Win32API::Registry::RegDeleteValue $self->Handle, @_; }
sub RegEnumKey { my $self= shift(@_);
    Win32API::Registry::RegEnumKey $self->Handle, @_; }
sub RegEnumKeyEx { my $self= shift(@_);
    Win32API::Registry::RegEnumKeyEx $self->Handle, @_; }
sub RegEnumValue { my $self= shift(@_);
    Win32API::Registry::RegEnumValue $self->Handle, @_; }
sub RegFlushKey { my $self= shift(@_);
    Win32API::Registry::RegFlushKey $self->Handle, @_; }
sub RegGetKeySecurity { my $self= shift(@_);
    Win32API::Registry::RegGetKeySecurity $self->Handle, @_; }
sub RegLoadKey { my $self= shift(@_);
    Win32API::Registry::RegLoadKey $self->Handle, @_; }
sub RegNotifyChangeKeyValue { my $self= shift(@_);
    Win32API::Registry::RegNotifyChangeKeyValue $self->Handle, @_; }
sub RegOpenKey { my $self= shift(@_);
    Win32API::Registry::RegOpenKey $self->Handle, @_; }
sub RegOpenKeyEx { my $self= shift(@_);
    Win32API::Registry::RegOpenKeyEx $self->Handle, @_; }
sub RegQueryInfoKey { my $self= shift(@_);
    Win32API::Registry::RegQueryInfoKey $self->Handle, @_; }
sub RegQueryMultipleValues { my $self= shift(@_);
    Win32API::Registry::RegQueryMultipleValues $self->Handle, @_; }
sub RegQueryValue { my $self= shift(@_);
    Win32API::Registry::RegQueryValue $self->Handle, @_; }
sub RegQueryValueEx { my $self= shift(@_);
    Win32API::Registry::RegQueryValueEx $self->Handle, @_; }
sub RegReplaceKey { my $self= shift(@_);
    Win32API::Registry::RegReplaceKey $self->Handle, @_; }
sub RegRestoreKey { my $self= shift(@_);
    Win32API::Registry::RegRestoreKey $self->Handle, @_; }
sub RegSaveKey { my $self= shift(@_);
    Win32API::Registry::RegSaveKey $self->Handle, @_; }
sub RegSetKeySecurity { my $self= shift(@_);
    Win32API::Registry::RegSetKeySecurity $self->Handle, @_; }
sub RegSetValue { my $self= shift(@_);
    Win32API::Registry::RegSetValue $self->Handle, @_; }
sub RegSetValueEx { my $self= shift(@_);
    Win32API::Registry::RegSetValueEx $self->Handle, @_; }
sub RegUnLoadKey { my $self= shift(@_);
    Win32API::Registry::RegUnLoadKey $self->Handle, @_; }
sub AllowPriv { my $self= shift(@_);
    Win32API::Registry::AllowPriv @_; }


# Autoload methods go after =cut, and are processed by the autosplit program.

1;
__END__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲同性同志一二三专区| 91在线小视频| 91国偷自产一区二区三区成为亚洲经典| 国产精品久久夜| 肉肉av福利一精品导航| 成人h精品动漫一区二区三区| 3atv一区二区三区| 亚洲精品免费在线| 国产成人综合亚洲91猫咪| 91麻豆精品国产91久久久资源速度| 国产精品传媒在线| 成人午夜免费视频| 精品日韩99亚洲| 日本亚洲欧美天堂免费| 在线亚洲一区二区| 国产精品成人在线观看| 国产一区二区三区视频在线播放| 欧美精品v日韩精品v韩国精品v| 中文字幕视频一区二区三区久| 精品中文字幕一区二区| 678五月天丁香亚洲综合网| 一区二区三区日韩欧美| 99久久久久久| 国产精品久久久久影院| 国产激情视频一区二区在线观看| 亚洲国产成人高清精品| 97精品国产97久久久久久久久久久久| 久久久青草青青国产亚洲免观| 免费成人在线观看视频| 7799精品视频| 天天色综合天天| 欧美日韩色一区| 亚洲图片一区二区| 欧美性猛交xxxx黑人交| 樱花草国产18久久久久| 91一区一区三区| 中文字幕字幕中文在线中不卡视频| 高清国产一区二区三区| 国产精品青草综合久久久久99| 国产成人免费高清| 久久精品男人的天堂| 国产成+人+日韩+欧美+亚洲 | 国产福利一区二区| 久久精品夜色噜噜亚洲aⅴ| 国产精品1区2区| 中国色在线观看另类| 国产很黄免费观看久久| 国产丝袜在线精品| 成人听书哪个软件好| 国产精品国产三级国产aⅴ中文 | 成人三级在线视频| 国产精品久久久久久久久动漫 | 蜜桃久久精品一区二区| 日韩一级二级三级精品视频| 麻豆久久一区二区| 久久亚洲综合色一区二区三区| 国产一区二区视频在线播放| 国产亚洲欧美日韩在线一区| 处破女av一区二区| 日韩美女视频一区| 欧美亚洲国产一卡| 日本欧美韩国一区三区| 久久夜色精品国产噜噜av | 蜜臀av一区二区| 久久在线观看免费| 97久久久精品综合88久久| 夜夜精品视频一区二区 | 色呦呦网站一区| 亚洲大片一区二区三区| 日韩一级成人av| 欧美老年两性高潮| 国内精品自线一区二区三区视频| 国产精品人妖ts系列视频| 91浏览器在线视频| 天堂一区二区在线免费观看| 久久这里只精品最新地址| 97超碰欧美中文字幕| 亚洲第一狼人社区| 精品国产91乱码一区二区三区| 成人影视亚洲图片在线| 亚洲一二三专区| 精品国产一二三| 不卡一区二区在线| 日韩成人dvd| 中文字幕一区日韩精品欧美| 在线观看欧美精品| 精品中文字幕一区二区小辣椒| 中文字幕一区二区三区在线观看| 欧美日韩一区二区三区四区五区| 久久99精品一区二区三区三区| 中文字幕一区二区三区四区不卡 | 欧美日免费三级在线| 久久成人麻豆午夜电影| 中文字幕视频一区二区三区久| 69av一区二区三区| 99re66热这里只有精品3直播| 欧美aa在线视频| 日韩伦理电影网| 精品国产伦理网| 91成人免费网站| 国产精品77777| 午夜精品一区二区三区电影天堂| 中文字幕av一区 二区| 欧美高清视频不卡网| 成人av网站大全| 久久不见久久见免费视频7| 亚洲色图视频网| 精品国免费一区二区三区| 色吊一区二区三区| 国产精品主播直播| 日韩精品91亚洲二区在线观看| 国产精品大尺度| 久久久综合激的五月天| 在线播放一区二区三区| 色婷婷av一区二区三区大白胸| 狠狠色丁香久久婷婷综合_中| 亚洲综合男人的天堂| 国产精品系列在线| 精品国产乱码久久久久久图片| 欧美系列一区二区| av不卡免费在线观看| 欧美日韩在线播放| 成人aaaa免费全部观看| 极品少妇一区二区三区精品视频| 亚洲一区二区三区自拍| 中文字幕 久热精品 视频在线| 精品国产一区二区三区忘忧草 | 日韩一级片在线观看| 91福利精品视频| 不卡一区二区三区四区| 国产精品影视网| 美女视频网站黄色亚洲| 天堂蜜桃91精品| 亚洲一区二区在线观看视频| 亚洲欧美一区二区视频| 亚洲国产高清aⅴ视频| 久久久精品日韩欧美| 日韩精品一区二区三区四区| 欧美精品三级日韩久久| 欧美日韩国产片| 欧美日韩一区二区三区四区五区| 91久久精品午夜一区二区| 成人av电影在线观看| 成人深夜在线观看| 国产成人免费在线视频| 国产在线观看免费一区| 精品夜夜嗨av一区二区三区| 免费在线观看不卡| 免费精品视频最新在线| 日韩中文字幕亚洲一区二区va在线| 亚洲国产va精品久久久不卡综合| 亚洲综合久久久久| 一区二区三区精品久久久| 亚洲乱码国产乱码精品精98午夜 | 久久免费视频色| 精品国产凹凸成av人网站| 精品成人在线观看| 精品国产三级a在线观看| 精品国产91久久久久久久妲己| 亚洲精品一区二区三区香蕉 | 91极品美女在线| 91黄色激情网站| 欧美日韩免费在线视频| 欧美三片在线视频观看| 欧美日韩aaaaa| 欧美一区二区私人影院日本| 欧美一区二区三区免费观看视频 | 99久久精品免费| 91看片淫黄大片一级| 日本韩国一区二区三区视频| 欧美在线你懂得| 欧美肥妇bbw| 欧美成人精品3d动漫h| 久久人人超碰精品| 国产精品久久久久一区| 中文字幕在线不卡一区二区三区| 中文字幕在线观看不卡| 亚洲综合色自拍一区| 亚洲成a天堂v人片| 麻豆91精品视频| 国产成人av电影在线| 97久久超碰精品国产| 欧美日韩高清一区二区三区| 欧美刺激午夜性久久久久久久| 国产亚洲精品7777| 亚洲色图第一区| 亚洲成人免费影院| 精品在线免费视频| 成人av网在线| 7777精品伊人久久久大香线蕉的 | 中文av一区特黄| 一区二区欧美精品| 久久国产精品免费| 成人自拍视频在线观看| 欧美在线免费播放| 精品免费国产二区三区| 国产精品麻豆视频| 午夜精品成人在线视频| 国内精品伊人久久久久av一坑| 99久久国产综合精品麻豆|