Ok, credo che tu abbia un po' di confusione sulla gestione degli utenti in Windows. L'utente "FSITMIC00130\IUSR_FSITMIC00130" che ti viene ritornato è effettivamente l'utente che esegue il processo dove gira la tua applicazione; se FSITMIC00130 è il nome della tua macchina, significa che l'utente è locale. Non per questo sei limitato ad eseguire processi con utenti locali, anzi.
Mi pare di comunque di capire che desideri sapere il nome dell'utente che
eventualmente ha effettuato interattivamente il logon sulla macchina ospitante, aprendo così una sessione interattiva... Il codice è un po' più complesso ma digeribile. :)
Prima di tutto devi aggiungere il riferimento a System.Management.dll nel tuo progetto. Poi puoi utilizzare una funzione tipo questa:
string GetLoggedOnUserName()
{
ManagementScope scope = new ManagementScope(@"\\.\Root\Cimv2");
scope.Connect();
// Accede alla classe WMI del computer locale
ManagementClass computerSystem =
new ManagementClass("Win32_ComputerSystem");
foreach (ManagementObject mgmtObject in computerSystem.GetInstances())
{
// La proprietà Username contiene il nome dell'utente che ha fatto
// log on interattivo nel sistema.
PropertyData propCurrent = mgmtObject.Properties["Username"];
if (propCurrent.Value != null)
{
return (string)propCurrent.Value;
}
}
return null;
}Ciao, HTH