Process.Start Permissions Problem

Sto cercando di eseguire un problema esterno da C # utilizzando Process.Start, ma sto correndo in problemi di autorizzazioni. Quando apro normalmente un prompt dei comandi (non come amministratore) ed eseguo i miei comandi funzionano bene, ma quando apro un prompt dei comandi tramite Process.Start, ottengo un errore di scrittura nella directory. (“Non riesco a scrivere sul file test.log”)
Se lo eseguo come un amministratore tramite Process.Start funziona bene, ma ottengo il popup delle autorizzazioni. Qualcuno ha qualche idea che potrebbe aiutarmi a capirlo? Grazie!

Ecco il codice che sto usando:

Process proc = new Process(); proc.StartInfo.FileName = @"cmd.exe"; proc.StartInfo.Arguments = @"/k latex C:\Users\Shane\Documents\test.tex"; proc.Start(); proc.WaitForExit(); 

Mi chiedo se stia cercando di scrivere un registro diagnostico nella directory di lavoro corrente, per la quale potresti non avere permessi. (Non so in modo approfondito se erediterà la directory di lavoro, o sarà la directory che contiene cmd.exe.) Suggerisco di specificare la directory di lavoro per il nuovo processo utilizzando ProcessStartInfo.WorkingDirectory .

(Per inciso, personalmente trovo che sia più pulito creare un nuovo ProcessStartInfo popolato che – gli inizializzatori di oggetti C # rendono questo particolarmente piacevole) e quindi chiamare Process.Start(ProcessStartInfo) per avviarlo. Altrimenti sembra che ci sia già un processo quando non ce n’è ancora uno. Comunque, solo MHO, e non correlato al problema che stai indagando, probabilmente.)

Invece di utilizzare cmd.exe come proprietà FileName dell’object Process, mantenere i comandi in un file batch e quindi utilizzare tale file per l’esecuzione.

Inoltre puoi menzionare i privilegi dell’amministratore come username, password, dominio ecc. Tramite la proprietà StartInfo della class Process. Se usi queste proprietà, penso che il problema dei permessi non arriverà. Qui puoi trovare ulteriori informazioni sulla proprietà StartInfo.

Spero che sia d’aiuto.