Povia e il concerto annullato: ‘etichettato come cantante di destra’
Musica: il cantante Povia polemico con l’estremizzazione: ‘il mio concerto è stato annullato, perchè etichettato come cantante di destra’ Il ...
Musica: il cantante Povia polemico con l’estremizzazione: ‘il mio concerto è stato annullato, perchè etichettato come cantante di destra’ Il ...
Un sondaggio ha evidenziato ancora una volta, quello che purtroppo già da qualche anno era venuto alla luce: La Gen ...
Un ritrovamento ha scosso il mondo dell’archeologia: scoperto il segreto della ‘Mummia urlante’ Nel 1935, una spedizione archeologica a Deir ...
Il caffè può essere un alleato quotidiano per il benessere fisico dell’intestino, selezionando i batteri buoni del microbiota, ma come? ...
Carceri, il trend è allucinante. dal 2014 a oggi sono stati oltre 600 i suicidi e si rischia un triste ...
Dalla paralisi all’infarto, cosa rischi se ti colpisce un fulmine In Italia, la stagione estiva porta con sé non solo ...
Oggi un cliente mi segnalava una problematica. Per non avere problemi di permessi durante l’esecuzione di un programma, questo doveva essere eseguito come un utente amministratore. Diciamo che inserire tutti gli utenti di una azienda nel gruppo degli amministratori delle macchine mi sembra eccessivo, l’unica cosa da fare era eseguire il programma come un utente amministratore, un semplice RunAs.
Per questo motivo ho sviluppato una applicazione di console la quale non fa nient’altro che eseguire l’eseguibile con una utenza specifica. Ecco il codice della applicazione in VB.NET:
Importate le seguenti librerie nel vostro progetto:
Imports System.Windows.Forms
Imports System.Diagnostics
Imports System.Security
Imports System.Security.Principal
Poi nella main del progetto aggiungete queste righe di codice sostituendo utenza, password, programma e altre variabili necessarie:
Dim password As SecureString
Dim proc As ProcessStartInfo
Dim pwd As String = “PASSWORD DEL UTENTE CHE ESEGUE L’APPLICAZIONE”
Try
password = New SecureString()
‘Se inserite questo eseguibile nello stesso percorso della applicazione da
‘eseguire potete utilizzare (Application.StartupPath & “\Programma.exe”)
proc = New ProcessStartInfo(“PERCORSO DEL ESEGUIBILE CHE VERRA’ ESEGUITO”)
For Each carattere As Char In pwd
password.AppendChar(carattere)
Next
proc.UserName = “NomeUtente”
‘Se è un utente di dominio specificate il dominio
proc.Domain = “EventualeDominio”
proc.Password = password
proc.UseShellExecute = False
Process.Start(proc)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Il codice è abbastanza semplice ma se ci sono dei dubbi chiedete pure. Ecco invece l’equivalente codice in C#:
using System.Security;
using System.Security.Principal;
using System.Diagnostics;
using System.Windows.Forms;
Nella main del progetto aggiungete:
SecureString password;
ProcessStartInfo proc
string pwd = “PASSWORD DEL UTENTE CHE ESEGUE L’APPLICAZIONE”;
Try
{
//Se inserite questo eseguibile nello stesso percorso della applicazione da
//eseguire potete utilizzare (Application.StartupPath & “\Programma.exe”)
proc = new ProcessStartInfo(“PERCORSO DEL ESEGUIBILE CHE VERRA’ ESEGUITO”);
password = new SecureString();
foreach (char carattere in pwd)
{
password.AppendChar(carattere);
}
proc.UserName = “NomeUtente”;
proc.Password = password;
//Se è un utente di dominio specificate il dominio
proc.Domain = “EventualeDominio”;
proc.UseShellExecute = false;
Process.Start(proc);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Come sempre spero di essere stato chiaro in questa spiegazione. Buona programmazione a tutti.
© 2024 G Tech Group S.R.L.S. – Via di Gagia 22, 38086 Giustino (TN) – P.IVA 02743570224 – REA TN – 246638 – SDI SZLUBAI -PEC gtechgroupsrls@postacert.eu
3 risposte
La descrizione è chiarissima e funzionale, ma non comprendo come mai su W7 64bit avviando un eseguibile senza diritti amministrativi o con diritti amministrativi usando quest’applicazione i problemi di latenza rimangono invariati, cosa che non avviene se eseguo l’eseguibile con il comando “esegui come amministratore”
Qualche controllo in più da parte di Antiviurs o altri tool di sicurezza di Win7. Disattiva i controlli e fa una prova.
in vb2008 come faccio ad eseguire solo parti di codice come amministratore:
per esempio file.copy(“c:\temp\pippo.exe”, “c:\programmi\app\pippo.exe”)
grazie