xp_fixeddrives é um procedimento não documentado. Então, basicamente, não existe. Não há maneira documentada de conceder, negar ou revogar qualquer permissão e o resultado da execução pode ser basicamente qualquer coisa.
Dito isso, você pode tentar envolver o XP em um procedimento comum, depois usar a assinatura de código para conceder as permissões necessárias ao procedimento e conceder o EXEC ao usuário no wrapper, semelhante ao exemplo no meu blog: Assinando um procedimento ativado . Isso funciona na minha máquina. Sua milhagem pode variar, como é o caso sempre que você usar a funcionalidade não documentada:
use master;
go
create procedure usp_fixeddrives
with execute as caller
as
begin
exec xp_fixeddrives;
end
go
grant execute on usp_fixeddrives to [low_priviledged_user];
go
create certificate [usp_fixeddrives]
encryption by password = 'AnyPassword@1234!'
with subject = N'usp_fixeddrives'
, start_date = '11/05/2009';
go
add signature to [usp_fixeddrives]
by certificate [usp_fixeddrives]
with password ='AnyPassword@1234!';
go
create login [usp_fixeddrives] from certificate [usp_fixeddrives];
go
grant authenticate server to [usp_fixeddrives];
grant control server to [usp_fixeddrives];
go
alter certificate [usp_fixeddrives] remove private key;
go