After adding linked server successfully, I cannot select table via linked server. This select statement

select * from serverX.master.dbo.sysobjects

Produces this error:

Server: Msg 7302, Level 16, State 1, Line 1
Could not create an instance of OLE DB provider 'SQLOLEDB'.
OLE DB error trace [Non-interface error: CoCreate of DSO for SQLOLEDB returned 0x8007007f].

I am also receiving the same err when trying to add a pull replication. Basically I can't even setup a distributor.

I can ping each server, and have rebooted. I've also reinstalled MDAC. Any clues?