Index: Include/Classes/System/IO/Path.ab
===================================================================
--- Include/Classes/System/IO/Path.ab	(revision 124)
+++ Include/Classes/System/IO/Path.ab	(revision 125)
@@ -1,8 +1,8 @@
 Class Path
 Public
-	Static AltDirectorySeparatorChar = &H2F As Byte '/
-	Static DirectorySeparatorChar = &H5C As Byte    '\
-	Static PathSeparator = &H3B As Byte             ';
-	Static VolumeSeparatorChar = &H3A As Byte       ':
+	Static AltDirectorySeparatorChar = &H2F As Char '/
+	Static DirectorySeparatorChar = &H5C As Char    '\
+	Static PathSeparator = &H3B As Char             ';
+	Static VolumeSeparatorChar = &H3A As Char       ':
 
 	Static Function GetFileName(path As String) As String
@@ -50,5 +50,5 @@
 	End Function
 
-	Static Function HasExtension(ByRef path As String) As BOOL
+	Static Function HasExtension(ByRef path As String) As Boolean
 		If GetExtension(path) <> "" Then
 			Return _System_TRUE
@@ -59,5 +59,19 @@
 
 	Static Function GetTempFileName() As String
-		' TODO: 実装
+		Dim tempPathSize = __GetTempPath(0, 0)
+		Dim tempPath = _System_malloc(SizeOf (TCHAR) * tempPathSize) As PTSTR
+		If tempPath = 0 Then
+			' Throw OutOfMemoryException
+			Debug
+		End If
+		If __GetTempPath(tempPathSize, tempPath) > tempPathSize Then
+			' Throw IOException?
+			Debug
+		End If
+
+		Dim tempFileName[ELM(MAX_PATH)] As TCHAR
+		__GetTempFileName(tempPath, "ABT", 0, tempFileName)
+		free(tempPath)
+		Return tempFileName
 	End Function
 
@@ -148,2 +162,6 @@
 	Return GetTempPath(nBufferLength, lpBuffer)
 End Function
+
+Function __GetTempFileName(pPathName As PCSTR, pPrefixString As PCSTR, uUnique As DWord, pTempFileName As PSTR) As DWord
+	Return GetTempFileName(pPathName, pPrefixString, uUnique, pTempFileName)
+End Function
Index: Include/Classes/System/String.ab
===================================================================
--- Include/Classes/System/String.ab	(revision 124)
+++ Include/Classes/System/String.ab	(revision 125)
@@ -12,4 +12,9 @@
 		String()
 		Assign(initStr)
+	End Sub
+
+	Sub String(initStr As *Char, length As Long)
+		String()
+		Assign(initStr, length)
 	End Sub
 
@@ -454,9 +459,15 @@
 
 	Sub ToLower()
-		CharLower(Chars)
+		Dim i As Long
+		For i = 0 To m_Length
+			Chars[i] = _System_ASCII_ToLower(Chars[i])
+		Next
 	End Sub
 
 	Sub ToUpper()
-		CharUpper(Chars)
+		Dim i As Long
+		For i = 0 To m_Length
+			Chars[i] = _System_ASCII_ToUpper(Chars[i])
+		Next
 	End Sub
 
