Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Aprire una cartella da REMOTO
mercoledì 03 dicembre 2008 - 10.59
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
kintaro
Profilo
| Junior Member
78
messaggi | Data Invio:
mer 3 dic 2008 - 10:59
Ciao, ho già fatto tutte le ricerche sugli altri tread prima di aprirne un altro, ma proprio non ho trovato nulla di compatibile con il winform.
sto cercando di aprire delle cartelle che si trovano su una cartella fuori dal dominio, naturalmente ho l'user e la password ed ho pensato di utilizzare l'impersonalizzazione di windows
allego la classe che utilizzo :
using System;
using System.ComponentModel;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.ConstrainedExecution;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Security.Principal;
namespace PreparaMpsRoma
{
public class ImpersonateUser
{
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool LogonUser(
String lpszUsername,
String lpszDomain,
String lpszPassword,
int dwLogonType,
int dwLogonProvider,
ref IntPtr phToken);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private extern static bool CloseHandle(IntPtr handle);
private static IntPtr tokenHandle = new IntPtr(0);
private static WindowsImpersonationContext impersonatedUser;
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public void Impersonate(string domainName, string userName, string password)
{
try
{
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;
tokenHandle = IntPtr.Zero;
bool returnValue = LogonUser(userName,domainName,password,
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,
ref tokenHandle); // tokenHandle - new security token
if (false == returnValue)
{
int ret = Marshal.GetLastWin32Error();
Console.WriteLine("LogonUser call failed with error code : " +
ret);
throw new System.ComponentModel.Win32Exception(ret);
}
// Step - 2
WindowsIdentity newId = new WindowsIdentity(tokenHandle);
// Step -3
impersonatedUser = newId.Impersonate();
}
catch (Exception ex)
{
Console.WriteLine("Exception occurred. " + ex.Message);
}
}
}
quello che non capisco e che quando inserisco user : miautenza, password : miapsw, domainName : \\168.96.200.78\myfolder , mi rimanda sempre l'errore : "Errore durante l'accesso: nome utente sconosciuto o password non valida"
cosa sbaglio??
Grazie
Fabio
0v3rCl0ck
Profilo
| Guru
1.120
messaggi | Data Invio:
gio 11 dic 2008 - 16:59
>Ciao,
Ciao
>ho già fatto tutte le ricerche sugli altri tread prima
>di aprirne un altro, ma proprio non ho trovato nulla di compatibile
>con il winform.
>
>sto cercando di aprire delle cartelle che si trovano su una cartella
>fuori dal dominio, naturalmente ho l'user e la password ed ho
>pensato di utilizzare l'impersonalizzazione di windows
>
Pensato ad utilizzare l'impersonating integrata in asp.net?
http://msdn.microsoft.com/en-us/library/aa292118
(VS.71).aspx
http://blogs.ugidotnet.org/jc/archive/2005/09/26/27072.aspx
In questo modo potresti configurarti un utente di domino con cui le richieste vengono esaudite. Poi all'utente di dominio potrai configurare tutte le policy del caso: dove può andare, con che diritti, ecc...
Oppure per farlo a livello di programmazione (come hai provato a fare tu), prova a seguire questa documentazione MS:
http://support.microsoft.com/?scid=kb%3Ben-us%3B306158&x=7&y=8
-------------------------------------------------------------------
Michael Denny
Senior Software Developer
Microsoft Framework (C# ASP.NET VB.NET)
http://blogs.dotnethell.it/Regulator/
kintaro
Profilo
| Junior Member
78
messaggi | Data Invio:
ven 12 dic 2008 - 10:42
Dai miei studi in merito ho capito che l'impersonate e gli esempi che mi hai postato sono solo per i client dello stesso dominio.
mi sono anche scaricato da MS tutta una suite di esempi in merito!!
ho testato anche la mia classe con un utenza dello stesso dominio e funziona ma nel mio caso no, (non so se è qst il vero motivo ma non trovo altre spiegazioni), l'indirizzo a cui io mi vado a loggare è un indirizzo pubblico fuori dal mio dominio.
Sempre indagando credo che la soluzione sia nell'assembly [System.Net] ma ancora non ho indagato approfinditamente per portare avanti altri lavori, ma di certo questo non lo reputo terminato!!
oggi ho consegnato l'applicazione (vers. 0.9) con un accrocco: in fase di installazione parte un comando BAT che installa l'unità di rete (net use), da qui poi funziona tutto, essendo un server non viene mai ravviato, salvo imprevisti, e cmq l'installazione dell'unità si rinstalla al ravvio, la soluzione non mi piace perchè sono dati confidenziali quindi dovremmo essere un numero chiuso ad avere le credenziali per l'accesso, invece cosi...
Grazie dell'aiuto!
Fabio
0v3rCl0ck
Profilo
| Guru
1.120
messaggi | Data Invio:
ven 12 dic 2008 - 11:02
>Dai miei studi in merito ho capito che l'impersonate e gli esempi
>che mi hai postato sono solo per i client dello stesso dominio.
Sinceramente non ho mai provato accedendo ad un dominio diverso da quello del server, ma mi sembra strano non vada. Tutti gli articoli che ti ho mandato prevedono di specificare il dominio per il login, strano che non vadano.
>
>mi sono anche scaricato da MS tutta una suite di esempi in merito!!
>
>ho testato anche la mia classe con un utenza dello stesso dominio
>e funziona ma nel mio caso no, (non so se è qst il vero motivo
>ma non trovo altre spiegazioni), l'indirizzo a cui io mi vado
>a loggare è un indirizzo pubblico fuori dal mio dominio.
>
>Sempre indagando credo che la soluzione sia nell'assembly [System.Net]
>ma ancora non ho indagato approfinditamente per portare avanti
>altri lavori, ma di certo questo non lo reputo terminato!!
>oggi ho consegnato l'applicazione (vers. 0.9) con un accrocco:
>in fase di installazione parte un comando BAT che installa l'unità
>di rete (net use), da qui poi funziona tutto, essendo un server
>non viene mai ravviato, salvo imprevisti, e cmq l'installazione
>dell'unità si rinstalla al ravvio, la soluzione non mi piace
>perchè sono dati confidenziali quindi dovremmo essere un numero
>chiuso ad avere le credenziali per l'accesso, invece cosi...
Se riesco a provare la cosa, poi ti faccio sapere...
-------------------------------------------------------------------
Michael Denny
Senior Software Developer
Microsoft Framework (C# ASP.NET VB.NET)
http://blogs.dotnethell.it/Regulator/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !