Index: /trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/Registry.ab
===================================================================
--- /trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/Registry.ab	(revision 576)
+++ /trunk/ab5.0/ablib/src/Classes/ActiveBasic/Windows/Registry.ab	(revision 577)
@@ -35,4 +35,5 @@
 	rootkeyname As String
 	subkeyname As String
+	edited As Boolean
 
 	Virtual Sub ~RegistryKey( )
@@ -43,5 +44,10 @@
 	'キーの名前を取得します。 
 	Function Name( ) As String
-		Dim name = rootkeyname + "\" + subkeyname
+		Dim name As String
+		If IsNothing(This.subkeyname) Then 
+			name = This.rootkeyname
+		Else
+			name = This.rootkeyname + "\" + This.subkeyname
+		End If
 		Return name
 	End Function
@@ -64,5 +70,5 @@
 	'キーを閉じ、キーの内容が変更されている場合はディスクへフラッシュします。  
 	Sub Close( )
-		This.Flush()
+		If This.edited Then This.Flush()
 		RegCloseKey( This.handle )
 	End Sub
@@ -70,7 +76,22 @@
 	'新しいサブキーを作成するか、または既存のサブキーを開きます。  
 	Function CreateSubKey( subkey As String ) As RegistryKey
+		If IsNothing(subkey) Then Return Nothing
+		Dim buf = subkey
+		'末尾の\を除去
+		If buf.EndsWith( "\" ) Then
+			buf = buf.Remove( buf.Length - 1 )
+		End If
+		'先頭の\を除去
+		If buf.StartsWith( "\" ) Then
+			buf = buf.Remove( 0, 1 )
+		End If
+
 		Dim key As Detail._System_RegistryKey
 		key.Root( This.rootkey )
-		key.SubKey( subkey )
+		If IsNothing(This.subkeyname) Then 
+			key.SubKey( buf )
+		Else
+			key.SubKey( This.subkeyname + "\" + buf )
+		End If
 		key.Create( )
 		Return key
@@ -87,17 +108,45 @@
 	'指定したサブキーを削除します。文字列 subkey では、大文字と小文字は区別されません。  
 	Sub DeleteSubKey ( subkey As String )
+		If IsNothing( subkey ) Then Exit Sub
+		This.DeleteSubKey( subkey, True )
 	End Sub
 	Sub DeleteSubKey ( subkey As String, throwOnMissingSubKey As Boolean )
+		If IsNothing( subkey ) Then Exit Sub
+		Dim key = This.OpenSubKey(subkey)
+		If key.SubKeyCount <> 0 Then
+			key.Close()
+			If throwOnMissingSubKey Then 
+				Throw New InvalidOperationException
+			Else
+				Exit Sub
+			End If
+		End If
+		RegDeleteKey( This.handle, ToTCStr(subkey) )
+		This.edited = True
 	End Sub
 
 	'サブキーとその子サブキーを再帰的に削除します。文字列 subkey では、大文字と小文字は区別されません。  
 	Sub DeleteSubKeyTree ( subkey As String )
+		If IsNothing( subkey ) Then Exit Sub
+		Dim key = This.OpenSubKey( subkey )
+		If key.SubKeyCount <> 0 Then
+			Dim list = key.GetSubKeyNames()
+			Dim s As String
+			Foreach s In list
+				key.DeleteSubKeyTree( s )
+			Next
+		End If
+		This.DeleteSubKey( subkey, False )
 	End Sub
 
 	'指定した値をこのキーから削除します。  
 	Sub DeleteValue ( name As String )
-		RegDeleteValue( This.handle, name )
+		If IsNothing( name ) Then Exit Sub
+		This.DeleteValue( name, True )
 	End Sub
 	Sub DeleteValue ( name As String, throwOnMissingValue As Boolean )
+		If IsNothing( name ) Then Exit Sub
+		RegDeleteValue( This.handle, ToTCStr(name) )
+		This.edited = True
 	End Sub
 
@@ -172,4 +221,5 @@
 	'指定した名前に関連付けられた値のレジストリ データ型を取得します。  
 	Function GetValueKind ( name As String ) As RegistryValueKind
+		If IsNothing( name ) Then Exit Sub
 		Dim dwType As DWord
 		If ERROR_SUCCESS <> RegQueryValueEx( This.handle, ToTCStr(name), 0, VarPtr(dwType), NULL, NULL ) Then
@@ -212,7 +262,22 @@
 	'指定したサブキーを取得します。  
 	Function OpenSubKey ( name As String ) As RegistryKey
+		If IsNothing(name) Then Return Nothing
+		Dim buf = name
+		'末尾の\を除去
+		If buf.EndsWith( "\" ) Then
+			buf = buf.Remove( buf.Length - 1 )
+		End If
+		'先頭の\を除去
+		If buf.StartsWith( "\" ) Then
+			buf = buf.Remove( 0, 1 )
+		End If
+
 		Dim key As Detail._System_RegistryKey
 		key.Root( This.rootkey )
-		key.SubKey( name )
+		If IsNothing(This.subkeyname) Then 
+			key.SubKey( buf )
+		Else
+			key.SubKey( This.subkeyname + "\" + buf )
+		End If
 		key.Open( )
 		Return key
@@ -273,12 +338,10 @@
 
 	Sub SubKey( subkey As String )
+		If IsNothing(subkey) Then Exit Sub
 		This.subkeyname = subkey
-		If This.subkeyname.EndsWith( "\" ) Then
-			This.subkeyname.Remove( This.subkeyname.Length - 1 )
-		End If
 	End Sub
 
 	Sub Create()
-		RegCreateKeyEx( This.rootkey, ToTCStr(This.subkeyname), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ or KEY_WRITE, NULL, This.handle, NULL )
+		RegCreateKeyEx( This.rootkey, ToTCStr(This.subkeyname), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, This.handle, NULL )
 	End Sub
 '	Function Create( permissionCheck As RegistryKeyPermissionCheck ) As RegistryKey
@@ -290,5 +353,5 @@
 
 	Sub Open()
-		RegOpenKeyEx( This.rootkey, ToTCStr(This.subkeyname), 0, KEY_READ or KEY_WRITE, This.handle )
+		RegOpenKeyEx( This.rootkey, ToTCStr(This.subkeyname), 0, KEY_ALL_ACCESS, This.handle )
 	End Sub
 '	Function Open( permissionCheck As RegistryKeyPermissionCheck ) As RegistryKey
Index: /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/Queue.ab
===================================================================
--- /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/Queue.ab	(revision 576)
+++ /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/Queue.ab	(revision 577)
@@ -5,5 +5,5 @@
 
 Class Queue<T>
-	Inherits ICollection
+	Implements IEnumerable<T>, IEnumerator<T>, System.Collections.ICollection
 
 	items As *T
@@ -45,5 +45,5 @@
 	@date	2008/07/20
 	*/
-	Override Sub Clear ()
+	Sub Clear ()
 		This.count = 0
 	End Sub
Index: /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/Stack.ab
===================================================================
--- /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/Stack.ab	(revision 576)
+++ /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/Stack.ab	(revision 577)
@@ -5,5 +5,5 @@
 
 Class Stack<T>
-	Inherits ICollection
+	Implements IEnumerable<T>, IEnumerator<T>, System.Collections.ICollection
 
 	items As *T
@@ -45,5 +45,5 @@
 	@date	2008/07/20
 	*/
-	Override Sub Clear ()
+	Sub Clear ()
 		This.count = 0
 	End Sub
Index: /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/misc.ab
===================================================================
--- /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/misc.ab	(revision 576)
+++ /trunk/ab5.0/ablib/src/Classes/System/Collections/Generic/misc.ab	(revision 577)
@@ -22,20 +22,13 @@
 Public
 	' Property
-	Virtual Function Count() As Long
-	End Function
-	Virtual Function IsReadOnly() As Boolean
-	End Function
+	Abstract Function Count() As Long
+	Abstract Function IsReadOnly() As Boolean
 
 	' Methods
-	Virtual Sub Add ( item As T )
-	End Sub
-	Virtual Sub Clear ()
-	End Sub
-	Virtual  Function Contains ( item As T ) As Boolean
-	End Function
-	Virtual Sub CopyTo (ByRef array As List<T>, arrayIndex As Long )
-	End Sub
-	Virtual Function Remove ( item As T ) As Boolean
-	End Function
+	Abstract Sub Add ( item As T )
+	Abstract Sub Clear ()
+'	Abstract  Function Contains ( item As T ) As Boolean
+'	Abstract Sub CopyTo (ByRef array As List<T>, arrayIndex As Long )
+	Abstract Function Remove ( item As T ) As Boolean
 End Class
 
@@ -45,18 +38,24 @@
 Public
 	' Property
-	Virtual Sub Operator[] ( index As Long, item As T )
-	End Sub
-	Virtual Function Operator[] ( index As Long ) As T
-	End Function
+	Abstract Sub Operator[] ( index As Long, item As T )
+	Abstract Function Operator[] ( index As Long ) As T
+
 	' Methods
-	Virtual Function Item ( index As Long ) As T
-	End Function
-	Virtual Function IndexOf ( item As T ) As Long
-	End Function
-	Virtual Sub Insert ( index As Long, item As T )
-	End Sub
-	Virtual Sub RemoveAt( index As Long )
-	End Sub
+	Abstract Function IndexOf ( item As T ) As Long
+	Abstract Sub Insert ( index As Long, item As T )
+	Abstract Sub RemoveAt( index As Long )
 End Class
+
+Namespace Details
+
+Interface ICollection<T>
+	' Property
+	Function Count() As Long
+	'/*Const*/ Function IsSynchronized() As Boolean
+	' Function SyncRoot() As ...
+End Interface
+
+End Namespace
+
 
 End Namespace
Index: /trunk/ab5.0/ablib/src/Classes/System/Collections/misc.ab
===================================================================
--- /trunk/ab5.0/ablib/src/Classes/System/Collections/misc.ab	(revision 576)
+++ /trunk/ab5.0/ablib/src/Classes/System/Collections/misc.ab	(revision 577)
@@ -10,5 +10,5 @@
 	Inherits IEnumerable
 	' Properties
-	'/*Const*/ Function Count() As Long
+	Function Count() As Long
 	'/*Const*/ Function IsSynchronized() As Boolean
 	' Function SyncRoot() As ...
Index: /trunk/ab5.0/ablib/src/Classes/System/Security/AccessControl/misc.ab
===================================================================
--- /trunk/ab5.0/ablib/src/Classes/System/Security/AccessControl/misc.ab	(revision 576)
+++ /trunk/ab5.0/ablib/src/Classes/System/Security/AccessControl/misc.ab	(revision 577)
@@ -3,4 +3,27 @@
 Namespace AccessControl
 
+Enum AccessControlActions
+	' 書き込み専用アクセスを指定します。  
+	Change
+	' アクセス拒否を指定します。  
+	None
+	' 読み取り専用アクセスを指定します。  
+	View
+End Enum
+
+Enum AccessControlModification
+	' 指定した承認規則をアクセス制御リスト (ACL: Access Control List) に追加します。  
+	Add
+	' 指定した承認規則と同じセキュリティ識別子 (SID) とアクセス マスクを含む承認規則を ACL から削除します。  
+	Remove
+	' 指定した承認規則と同じ SID を含む承認規則を ACL から削除します。  
+	RemoveAll
+	' 指定した承認規則に完全に一致する承認規則を ACL から削除します。  
+	RemoveSpecific
+	' 指定した承認規則と同じ SID を含む承認規則を ACL から削除し、指定した承認規則を ACL に追加します。  
+	Reset
+	' すべての承認規則を ACL から削除し、指定した承認規則を ACL に追加します。  
+	Set
+End Enum
 
 Enum AccessControlSections
@@ -13,4 +36,181 @@
 End Enum
 
+Enum AccessControlType
+	' AccessRule オブジェクトを使用して、セキュリティで保護されたオブジェクトへのアクセスを許可します。  
+	Allow
+	' AccessRule オブジェクトを使用して、セキュリティで保護されたオブジェクトへのアクセスを拒否します。  
+	Deny
+End Enum
+
+Enum CryptoKeyRights
+	' キーのアクセス許可を変更します。  
+	ChangePermissions
+	' キーを削除します。  
+	Delete
+	' キーのフル コントロール。  
+	FullControl
+	GenericAll
+	GenericExecute
+	GenericRead
+	GenericWrite
+	' キーの属性を読み取ります。
+	ReadAttributes
+	' キー データを読み取ります。  
+	ReadData
+	' キーの拡張属性を読み取ります。  
+	ReadExtendedAttributes
+	' キーのアクセス許可を読み取ります。  
+	ReadPermissions
+	' 同期用のキーを使用します。  
+	Synchronize
+	' キーの所有権を取得します。  
+	TakeOwnership
+	' キーの属性を書き込みます。  
+	WriteAttributes
+	' キー データを書き込みます。  
+	WriteData
+	' キーの拡張属性を書き込みます。  
+	WriteExtendedAttributes
+End Enum
+
+Enum EventWaitHandleRights
+	' 名前付きイベントに関連付けられたセキュリティと監査規則を変更する権限。  
+	ChangePermissions
+	' 名前付きイベントを削除する権限。  
+	Delete
+	' 名前付きイベントを完全に制御し、そのアクセス規則と監査規則を変更する権限。  
+	FullControl
+	' 名前付きイベントのシグナル状態を設定またはリセットする権限。  
+	Modify
+	' 名前付きイベントのアクセス規則と監査規則を開いてコピーする権限。  
+	ReadPermissions
+	' 名前付きイベントを待機する権限。  
+	Synchronize
+	' 名前付きイベントの所有者を変更する権限。  
+	TakeOwnership
+End Enum
+
+Enum FileSystemRights
+	' ファイルの末尾にデータを追加する権限を指定します。  
+	AppendData
+	' ファイルまたはフォルダに関連付けられたセキュリティ規則と監査規則を変更する権限を指定します。  
+	ChangePermissions
+
+	' フォルダを作成する権限を指定します。  
+	'この権限には Synchronize 値が必要です。ファイルまたはフォルダの作成時に Synchronize 値を明示的に設定しない場合、Synchronize 値は自動的に設定されます。 
+	CreateDirectories
+ 
+	' ファイルを作成する権限を指定します。  
+	'この権限には Synchronize 値が必要です。ファイルまたはフォルダの作成時に Synchronize 値を明示的に設定しない場合、Synchronize 値は自動的に設定されます。
+	CreateFiles
+ 
+	' フォルダまたはファイルを削除する権限を指定します。   
+	Delete
+	' フォルダおよびそのフォルダ内に格納されているファイルを削除する権限を指定します。  
+	DeleteSubdirectoriesAndFiles
+	' アプリケーション ファイルを実行する権限を指定します。  
+	ExecuteFile
+	' フォルダまたはファイルに対してフル コントロールを行い、アクセス制御と監査規則を変更する権限を指定します。この値は、ファイルに対してどのような操作でも行うことができる権限を表します。この値は、この列挙体のすべての権限を組み合わせたものです。  
+	FullControl
+	' ディレクトリの内容を読み取る権限を指定します。  
+	ListDirectory
+	' 読み取り、書き込み、フォルダの内容の一覧表示、フォルダとファイルの削除、およびアプリケーション ファイルの実行を行う権限を指定します。この権限には、ReadAndExecute 権限、Write 権限、および Delete 権限が含まれます。  
+	Modify
+	' フォルダまたはファイルを読み取り専用として開いたり、コピーしたりする権限を指定します。この権限には、ReadData 権限、ReadExtendedAttributes 権限、ReadAttributes 権限、および ReadPermissions 権限が含まれます。  
+	Read
+	' フォルダまたはファイルを読み取り専用として開いたりコピーしたりする権限、およびアプリケーション ファイルを実行する権限を指定します。この権限には、Read 権限および ExecuteFile 権限が含まれます。  
+	ReadAndExecute
+	' フォルダまたはファイルのファイル システム属性を開いたり、コピーしたりする権限を指定します。たとえば、この値は、ファイルの作成日や変更日を表示する権限を指定します。これには、データ、拡張ファイル システム属性、またはアクセス規則や監査規則を読み取る権限は含まれません。  
+	ReadAttributes
+	' ファイルまたはフォルダを開いたり、コピーしたりする権限を指定します。これには、ファイル システム属性、拡張ファイル システム属性、またはアクセス規則や監査規則を読み取る権限は含まれません。  
+	ReadData
+	' フォルダまたはファイルの拡張ファイル システム属性を開いたり、コピーしたりする権限を指定します。たとえば、この値は、作成者や内容に関する情報を表示する権限を指定します。これには、データ、ファイル システム属性、またはアクセス規則や監査規則を読み取る権限は含まれません。  
+	ReadExtendedAttributes
+	' フォルダまたはファイルのアクセス規則や監査規則を開いたり、コピーしたりする権限を指定します。これには、データ、ファイル システム属性、および拡張ファイル システム属性を読み取る権限は含まれません。   
+	ReadPermissions
+
+	' ファイル ハンドルが I/O 操作の完了に同期するまでアプリケーションが待機できるかどうかを指定します。 
+	'Synchronize 値は、アクセスを許可すると自動的に設定され、アクセスを拒否すると自動的に除外されます。
+	'ファイルまたはフォルダを作成する権限には、この値が必要です。この値は、ファイルの作成時に明示的に設定しなくても、自動的に設定されます。
+	Synchronize
+ 
+	' フォルダまたはファイルの所有者を変更する権限を指定します。リソースの所有者は、そのリソースに対してフル アクセス権限を持ちます。  
+	TakeOwnership
+	' フォルダの内容を一覧表示し、そのフォルダに格納されているアプリケーションを実行する権限を指定します。  
+	Traverse
+	' フォルダおよびファイルを作成し、ファイルに対してデータの追加または削除を行う権限を指定します。この権限には、WriteData 権限、AppendData 権限、WriteExtendedAttributes 権限、および WriteAttributes 権限が含まれます。   
+	Write
+	' フォルダまたはファイルのファイル システム属性を開いたり、フォルダまたはファイルにファイル システム属性を書き込んだりする権限を指定します。これには、データ、拡張属性、またはアクセス規則や監査規則を書き込む権限は含まれません。  
+	WriteAttributes
+	' ファイルまたはフォルダを開いたり、ファイルまたはフォルダに書き込んだりする権限を指定します。これには、ファイル システム属性、拡張ファイル システム属性、またはアクセス規則や監査規則を開いたり書き込んだりする権限は含まれません。  
+	WriteData
+	' フォルダまたはファイルの拡張ファイル システム属性を開いたり、フォルダまたはファイルに拡張ファイル システム属性を書き込んだりする権限を指定します。これには、データ、属性、またはアクセス規則や監査規則を書き込む権限は含まれません。  
+	WriteExtendedAttributes
+End Enum
+
+Enum MutexRights
+	'名前付きミューテックスに関連付けられたセキュリティと監査規則を変更する権限。  
+	ChangePermissions
+	'名前付きミューテックスを削除する権限。  
+	Delete
+	'名前付きミューテックスに対するフル コントロール、およびそのアクセス規則と監査規則を変更する権限。  
+	FullControl
+	'名前付きミューテックスを解放する権限。  
+	Modify
+	'名前付きミューテックスのアクセス規則と監査規則を開いてコピーする権限。  
+	ReadPermissions
+	'名前付きミューテックスが解放されるまで待機する権限。  
+	Synchronize
+	'名前付きミューテックスの所有者を変更する権限。  
+	TakeOwnership
+End Enum
+
+Enum RegistryRights
+	'レジストリ キーに関連付けられたアクセス規則と監査規則を変更する権限。  
+	ChangePermissions
+	'システムで使用するために予約されています。  
+	CreateLink
+	'レジストリ キーのサブキーを作成する権限。  
+	CreateSubKey
+	'レジストリ キーを削除する権限。  
+	Delete
+	'レジストリ キーのサブキーをリストする権限。  
+	EnumerateSubKeys
+	'ReadKey と同じです。  
+	ExecuteKey
+	'レジストリ キーに対するフル コントロール、およびそのアクセス規則と監査規則を変更する権限。  
+	FullControl
+	'レジストリ キーの変更通知を要求する権限。  
+	Notify
+	'レジストリ キー内の名前/値ペアを照会する権限。  
+	QueryValues
+	'レジストリ キー内の名前/値ペアの照会、変更通知の要求、そのサブキーの列挙、そのアクセス規則と監査規則の読み取りを行う権限。  
+	ReadKey
+	'レジストリ キーのアクセス規則と監査規則を開いてコピーする権限。  
+	ReadPermissions
+	'レジストリ キー内の名前/値ペアを作成、削除、または設定する権限。  
+	SetValue
+	'レジストリ キーの所有者を変更する権限。  
+	TakeOwnership
+	'レジストリ キー内の名前/値ペアの作成、削除、および設定、サブキーの作成または削除、変更通知の要求、そのサブキーの列挙、そのアクセス規則と監査規則の読み取りを行う権限。  
+	WriteKey
+End Enum
+
+Enum SemaphoreRights
+	' 名前付きセマフォに関連付けられたセキュリティと監査規則を変更する権限。  
+	ChangePermissions
+	' 名前付きセマフォを削除する権限。  
+	Delete
+	' 名前付きセマフォに対するフル コントロール、およびそのアクセス規則と監査規則を変更する権限。  
+	FullControl
+	' 名前付きセマフォを解放する権限。  
+	Modify
+	' 名前付きセマフォのアクセス規則と監査規則を開いてコピーする権限。  
+	ReadPermissions
+	' 名前付きセマフォを待機する権限。  
+	Synchronize
+	' 名前付きセマフォの所有者を変更する権限。  
+	TakeOwnership
+End Enum
 
 End Namespace
Index: /trunk/ab5.0/ablib/src/Classes/System/Threading/Thread.ab
===================================================================
--- /trunk/ab5.0/ablib/src/Classes/System/Threading/Thread.ab	(revision 576)
+++ /trunk/ab5.0/ablib/src/Classes/System/Threading/Thread.ab	(revision 577)
@@ -1,5 +1,5 @@
 'Thread.ab
 
-NameSpace System
+Namespace System
 
 /*タイプ*/
@@ -7,5 +7,5 @@
 
 
-NameSpace Threading
+Namespace Threading
 
 /*列挙体*/
@@ -483,6 +483,6 @@
 
 End Namespace 'Detail
-End NameSpace 'Threading
-End NameSpace 'System
+End Namespace 'Threading
+End Namespace 'System
 
 
Index: /trunk/ab5.0/ablib/src/Classes/index.ab
===================================================================
--- /trunk/ab5.0/ablib/src/Classes/index.ab	(revision 576)
+++ /trunk/ab5.0/ablib/src/Classes/index.ab	(revision 577)
@@ -7,4 +7,5 @@
 #require "./ActiveBasic/Strings/Strings.ab"
 #require "./ActiveBasic/Windows/CriticalSection.ab"
+#require "./ActiveBasic/Windows/Registry.ab"
 #require "./ActiveBasic/Windows/Windows.ab"
 #require "./ActiveBasic/Windows/UI/WindowHandle.sbp"
