static void ExtractParameters(
ApplicationInstanceAwareness awareness, out string prefix, out IdentityReference identity)
{
new SecurityPermission(SecurityPermissionFlag.ControlPrincipal).Assert();
WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();
if (currentIdentity == null)
{
throw new Exception("Unable to retrieve current identity");
}
if (awareness == ApplicationInstanceAwareness.Host && currentIdentity.Groups != null)
{
prefix = GlobalPrefix;
identity =
currentIdentity.Groups.FirstOrDefault(
reference => reference.Translate(typeof(SecurityIdentifier)).Value.Equals(UsersSidValue));
}
else
{
prefix = LocalPrefix;
identity = currentIdentity.User;
}
CodeAccessPermission.RevertAssert();
if (identity == null)
{
throw new Exception(
"Could not determine a proper identity to create synchronization objects access rules");
}
}