9

Non proprio sicuro della mia domanda esatta, ma qui è la situazione:visivo Modalità amministratore Studio in Windows 10

Ho un'applicazione (WinForms, C# .Net) che sto sviluppando in Visual Studio 2012. Lo fa un sacco di cose, ma il punto importante è che ha bisogno di leggere i file da una certa posizione.

In questo caso, la posizione dei file si trova su un server e la mia macchina ha una configurazione di unità di rete mappata per l'accesso ai file. Posso navigare manualmente verso i file con Windows Explorer bene.

Ho la seguente riga nel mio codice, che sta mettendo in luce il problema:

System.IO.File.Exists("X:\\A Folder\\a_file.txt"); 

E questo file esiste in quella posizione. Tuttavia, è qui che si verifica il problema: se creo la soluzione ed eseguo l'exe direttamente dalla cartella "bin" (doppio clic). Il codice va bene e trova il file. Ma se lo eseguo con Visual Studio, ricevo un'eccezione "File non trovato".

Sto mettendo questo sul fatto che Visual Studio è in esecuzione in modalità "Amministratore" (ho dimenticato perché avevo bisogno di questo, ma lo faccio). Ora questo ha senso se si considera che l'account "amministratore" non ha il disco "X: \" mappato. Tuttavia, questo non è mai stato un problema fino a quando non ho aggiornato a Windows 10 la scorsa settimana.

Quindi la mia domanda è:

Fa Visual Studio lavoro Modalità amministratore diverso in Windows 10? In questo caso, gestisce le unità di rete mappate in modo diverso?

Vale la pena notare che ho eseguito l'aggiornamento da Windows 7, quindi non posso confermare se questo problema è presente anche in 8 e 8.1 o meno.

E prima che qualcuno lo chieda, diciamo solo che ha un'unità da mappare. Nessun percorso UNC consentito!

+0

Forse non è legato alla tua domanda, ma Windows 10 in non supportati lista Sistema di VS 2012 Aggiornamento 5. Vedere http: // www .microsoft.com/it-it/download/Details.aspx? id = 48708. Potresti incontrare altri problemi in futuro. – qxg

+0

@qxg: sembra come se fossi ancora sull'aggiornamento 4 al minuto, quindi potrei passare a 5 e vedere se fa la differenza ... – musefan

+0

... nessuna differenza sull'aggiornamento 5 – musefan

risposta

5

Quindi ho trovato una soluzione/soluzione alternativa. Un po 'sembra una taglia scaduta ora, quindi se qualcuno ha altri suggerimenti che sono migliori allora si prega di postare e li esaminerò e li assegnerò come applicabile. O anche se qualcuno può fare una versione più dettagliata della mia soluzione, allora la assegnerò.


Il problema non è probabilmente specifico di Visual Studio, ma si verificherebbe con qualsiasi applicazione in esecuzione con privilegi elevati. Ad ogni modo, la soluzione che ho trovato è quella di aggiungere una chiave di registro che consente di accedere alle stesse unità condivise quando si esegue in modalità amministratore.

Il Registro di posizione chiave è:

HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Politiche/Sistema

E la chiave per aggiungere è chiamato:

EnableLinkedConnections

E dovrebbe essere creata come DWORD con un valore di 1 (0x00000001)

Ho controllato con i computer che eseguono Windows 7 e non hanno questa chiave, eppure ancora funzionare bene. Quindi mi aspetto che questa non sia l'unica soluzione, ma sembra funzionare (senza effetti collaterali ancora noti). Suppongo che Windows 10 abbia un'impostazione specifica da qualche parte che, per impostazione predefinita, impedisce alle unità mappate di essere automaticamente disponibili con "esegui come amministratore".

Per riferimento, ho trovato this information here.

In effetti, here is a more "official" recommendation per l'utilizzo di questo tasto reg.

+0

per questo una correzione a caldo disponibile. Non sono sicuro se questo è un altro modo piuttosto che farlo manualmente.ecco il [collegamento] (https://support.microsoft.com/en-us/kb/2878604) – Webruster

2

È improbabile che abbia qualcosa a che fare con Windows 10, solo con la configurazione della macchina. Quello che descrivi è normale e coperto da this KB article. Nulla di ciò che posso verificare, quindi prova i rimedi suggeriti, segui su superuser.com se necessario.

+0

Ho provato il primo metodo (era già impostato su "Richiedi il consenso per i binari non Windows", ma ho anche provato come suggerire "Prompt per consenso"), che non ha aiutato. Non voglio provare il metodo .bat, anche se funziona non lo voglio come soluzione. Sono l'unico sviluppatore con Windows 10 e sono l'unico sviluppatore con il problema (quindi dubito che si tratti di un problema relativo ai criteri del gruppo di dominio). Questo problema non si è mai verificato prima dell'aggiornamento a Windows 10. Quando i ragazzi IT sono tornati in ufficio, lo esaminerò per vedere se riesco a identificare questo come problema GP, ma non sono convinto – musefan

+0

Hmm, quindi La chiave di registro EnableLinkedConnections citata nell'articolo non ti è stata utile? Bummer .. –

+0

Non l'ho nemmeno visto, forse dovrebbero spostarlo nella sezione "Workaround" dove hanno messo gli altri suggerimenti per risolvere il problema. Ti ho dato la taglia perché scade tra un paio di minuti (e mi sento male per la mancanza del bit di modifica reg), ma non considero questo come una risposta decente ... fondamentalmente è una soluzione "solo link" – musefan

0

Diversi utenti/attività di sistema potrebbero essere in esecuzione. Come tale, hai il drive X mappato, ma altri no. È possibile eseguire il mapping dell'unità anche su altri utenti nell'installazione di Windows. Come hai affermato, questo non dovrebbe essere un problema solo per Windows 10, ma anche Windows 7+ e privilegi elevati.

Forse potresti utilizzare un parametro configurato per X: percorso e caricamento in fase di esecuzione, oppure provare a utilizzare percorsi UNC che verranno risolti in fase di esecuzione e che non richiedono la mappatura dell'unità.

\\ServerNameOrIP\A Folder\a_file.txt. 

Nel codice, si avrebbe bisogno:

System.IO.File.Exists("\\\\ServerName\\A Folder\\a_file.txt");