Gravando cookies do CookieContainer na loja de cookies do IE

Quero navegar para uma página em um aplicativo Web a partir de um aplicativo de desktop. "Não há problema", ouvi dizer, "basta iniciar o navegador padrão com o URL correto". No entanto, o aplicativo Web usa Autenticação de Formulários ASP.NET e os usuários não desejam ver a página de logon porque já foram autenticados com as mesmas credenciais no aplicativo de desktop.

Isso parece bastante simples, tudo o que preciso fazer é emitir um HTTP POST do aplicativo de desktop, o que falsifica a postagem da página de login do aplicativo da web. O aplicativo Web definirá seus tickets de autenticação e cookies de estado da sessão, devolvê-los para mim e eu os armazenarei no armazenamento de cookies do IE. Posso então navegar até a página desejada e o aplicativo Web acha que já está autenticado.

Eu tenho algum código de trabalho que constrói o HTTP POST, envia e obtém uma resposta válida contendo os cookies corretos. No entanto, não consigo ver como escrevê-los na loja de cookies do IE. Alguém pode me apontar na direção certa?

Código de amostra:

var requestUrl = Properties.Settings.Default.WebsiteLoginPageUrl;

var requestEncoding = Encoding.GetEncoding(1252);

// Simulated login postdata
var requestText = string.Format(
    "__VIEWSTATE={2}&__EVENTTARGET={3}&__EVENTARGUMENT={4}&__EVENTVALIDATION={5}&userNameText={0}&passwordText={1}&submitButton=Log+In",
    HttpUtility.UrlEncode(Properties.Settings.Default.UserName),
    HttpUtility.UrlEncode(Properties.Settings.Default.Password),
    Properties.Settings.Default.FakeViewState,
    Properties.Settings.Default.FakeEventTarget,
    Properties.Settings.Default.FakeEventArgument,
    Properties.Settings.Default.FakeEventValidation);

var request = (HttpWebRequest) WebRequest.Create(requestUrl);
request.Method = "POST";
request.Accept = "*/*";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = requestEncoding.GetByteCount(requestText);
request.Headers.Add(HttpRequestHeader.CacheControl, "no-cache");
request.AllowAutoRedirect = false;
request.KeepAlive = false;
request.CookieContainer = new CookieContainer();

using(var writer = new StreamWriter(request.GetRequestStream(), requestEncoding)) {
    writer.Write(requestText);
}

var response = (HttpWebResponse) request.GetResponse();

// TODO: Grab the response cookies and save them to the interactive desktop user's cookie store.

Process.Start(new ProcessStartInfo {
    FileName = Properties.Settings.Default.WebsiteTargetPageUrl,
    UseShellExecute = true,
});

questionAnswers(1)

yourAnswerToTheQuestion