Checking for ApplicationName in a transaction through a Before Trigger
Yes, you can use the APP_NAME() function in SQL.

This is set in the connection string though so it isn't reliable

Why not limit users? If a user has permissions, they can run msqry32 which is on any PC with Office installed, set a connection string using ODBC and make it look like what they want...