I'm really not sure this is possible. When a user logs in, Windows needs somewhere to store all the information that enables the user logging-in to function. Someone mentioned Group Policy already, but this is of no use to you because this login will be to join the machine to the domain, which will be before group policy can have any effect.
Your best bet is going to be to run a script remotely after the user logs out (after they have joined the machine to the domain). This script would cycle through the User Profiles on the remote machine (the PC just joined to the domain) checking the SIDs. If it finds a matching SID it deletes the profile.
I wrote a very similar script last year. It's at work. Will answer tomorrow with the script (when I'm at work)
UPDATE:
Here's the script I was talking about. It needed a pretty major overhaul as it was doing all kinds of cross domain funkiness because of the environment I'm in.
If you are getting permissions problems, change the UserName = "" and Password = "" sections to an account that has Local Admin rights over the target PC.
Option Explicit
On Error Resume Next
Dim strComputer
Dim objWMIService
Dim propValue
Dim objItem
Dim SWBemlocator
Dim UserName
Dim Password
Dim colItems
Dim strMessage
Dim deleteResponse
strComputer = ""
UserName = ""
Password = ""
strMessage = ""
strComputer = InputBox("Please enter the FQDN of the new computer:")
If strComputer = "" Then
WScript.quit
End If
If Not Ping (strComputer) Then
MsgBox "The computer (" + strComputer + ") is not responding to ping - exiting"
WScript.quit
End if
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_UserProfile",,48)
For Each objItem in colItems
strMessage = ""
If not objItem.LastDownloadTime = "" Then
strMessage = strMessage + "LastDownloadTime: " & left(objItem.LastDownloadTime,8) + Chr(10) + Chr(13)
End If
If Not objItem.LastUploadTime = "" Then
strMessage = strMessage + "LastUploadTime: " & left(objItem.LastUploadTime,8) + Chr(10) + Chr(13)
End if
if not objItem.LastUseTime = "" then
strMessage = strMessage + "LastUseTime: " & left(objItem.LastUseTime,8) + Chr(10) + Chr(13)
End If
If Not objItem.Loaded = "" Then
strMessage = strMessage + "Loaded: " & objItem.Loaded + Chr(10) + Chr(13)
End If
If not objItem.LocalPath = "" then
strMessage = strMessage + "LocalPath: " & objItem.LocalPath + Chr(10) + Chr(13)
End If
if not objItem.RefCount = "" then
strMessage = strMessage + "RefCount: " & objItem.RefCount + Chr(10) + Chr(13)
End If
if not objItem.RoamingConfigured = "" then
strMessage = strMessage + "RoamingConfigured: " & objItem.RoamingConfigured + Chr(10) + Chr(13)
End If
if not objItem.RoamingPath = "" then
strMessage = strMessage + "RoamingPath: " & objItem.RoamingPath + Chr(10) + Chr(13)
End If
if not objItem.RoamingPreference = "" then
strMessage = strMessage + "RoamingPreference: " & objItem.RoamingPreference + Chr(10) + Chr(13)
End If
if not objItem.SID = "" then
strMessage = strMessage + "SID: " & objItem.SID + Chr(10) + Chr(13)
End If
if not objItem.Special = "" then
strMessage = strMessage + "Special: " & objItem.Special + Chr(10) + Chr(13)
End If
if not objItem.Status = "" then
strMessage = strMessage + "Status: " & objItem.Status + Chr(10) + Chr(13)
End If
strMessage = strMessage + Chr(10) + Chr(13) + Chr(10) + Chr(13) + "Do you wish to delete this profile?"
deleteResponse = MsgBox (strMessage,35,"Profile Found")
Select Case deleteResponse
Case 6
Err.Clear
objItem.Delete_
If Err.Number = 0 Then
MsgBox("Profile " & objitem.localpath & " on " & strComputer & " deleted")
Else
MsgBox("Profile " & objitem.localpath & " on " & strComputer & " NOT deleted - Is user logged in?")
End If
End Select
Next
Function Ping(strHost)
dim objPing, objRetStatus
set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select * from Win32_PingStatus where address = '" & strHost & "'")
for each objRetStatus in objPing
if IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 then
Ping = False
else
Ping = True
end if
Next
End Function