Das Problem liegt
imho an dieser Zeile:
sil := SecurityIdentification;
Du duplizierst damit das Token von LogonUser, was eigentlich garnicht nötig wäre.
Das neue Token verwendet dann dieses Personifizierungslevel, was verhindert, dass CPAU das Token einem neuen Prozess zuordnen kann. Man kann mit dieser Stufe nämlich nur (mehr oder weniger) lesend auf das Token zugreifen. Siehe dazu:
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
Also versuch mal SecurityImpersonation oder benutze gleich das "original" Token von Logonuser ohne DuplicateToken.