It's to do with the way you pass the filepath to xp_dirtree, the only way I could get it working was with a temp table and dynamic SQL, like so:
CREATE PROCEDURE [dbo].[spGetBackUpFiles]
AS
SET NOCOUNT ON
BEGIN
IF OBJECT_ID('tempdb..#table') IS NOT NULL
DROP TABLE #table
CREATE TABLE #table
(
[filename] NVARCHAR(MAX) ,
depth INT ,
filefile INT
)
DECLARE @backUpPath AS TABLE
(
name NVARCHAR(MAX) ,
backuppath VARCHAR(256)
)
DECLARE @SQL NVARCHAR(MAX)
INSERT INTO @backUpPath
EXECUTE [master].dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE',
N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',
N'BackupDirectory'
DECLARE @backUpFilesPath AS NVARCHAR(MAX) = ( SELECT TOP 1
backuppath
FROM @backUpPath
)
SET @SQL = 'insert into #table
EXEC xp_dirtree ''' + @backUpFilesPath + ''', 1, 1'
EXEC(@SQL)
SELECT *
FROM #table WHERE [filename] like N'MASK[_]%'
DROP TABLE #table
END