Não é possível gravar em uma unidade mapeada usando representação
Basicamente, estou executando o mesmo problema que este postAcessando unidades mapeadas ao representar o ASP.NET
Estou trabalhando em um site herdado e preciso permitir que os administradores alterem o logotipo, os banners etc. do site, de um arquivo de imagem em suas áreas de trabalho para uma unidade mapeada no servidor.
Portanto, o site deles usa personificação sempre que precisa economizar na unidade e está funcionando bem; no entanto, não consigo fazer com que funcione no ambiente de teste nem no ambiente de teste.
Alguma ideia? Verifiquei usuário e senha duas vezes (o código não especifica domínio) e não é esse o problema.
Aqui está um trecho do código que lida com a representação:
public bool ImpersonateUser(String user, String password, String domain)
{
WindowsIdentity tempWindowsIdentity;
IntPtr token = IntPtr.Zero;
IntPtr tokenDuplicate = IntPtr.Zero;
if (RevertToSelf())
{
if (LogonUserA(user, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref token) != 0)
{
if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
{
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
impersonationContext = tempWindowsIdentity.Impersonate();
if (impersonationContext != null)
{
CloseHandle(token);
CloseHandle(tokenDuplicate);
return true;
}
}
}
}
//... rest of the code
E um teste -sanitized-:
if (impUtility.ImpersonateUser("user", "password", string.Empty))
{
fu.SaveAs(@"C:\Images\" + imgName);
}