Al momento di MS-DOS, o nelle derivate grafiche (fino a Windows ME incluso), non esisteva la nozione di "diritti amministrativi".
Ci sono due concetti distinti qui, che dovrebbero essere dettagliati. Il primo riguarda ciò che un processo è autorizzato a fare quando chiede gentilmente. Il secondo è quello che può fare se non è affatto bello.
In MS-DOS, ogni processo acquisisce il controllo esclusivo della macchina e può fare qualsiasi cosa desideri. Vede tutta la RAM, può parlare con tutto l'hardware e così via. Inoltre, non esiste uno scheduler, quindi un processo utilizza la CPU fino alla sua uscita. È possibile fare in modo che un processo si fermi, ma questo è in gran parte riservato un po 'di RAM e in attesa di controllo, solitamente, un interrupt hardware (i gestori del mouse hanno funzionato in quel modo).
Con Windows 3.1 in "386 extended mode" e le sue derivate Windows 95, 98 e Millenium (ME), diversi processi possono essere eseguiti contemporaneamente, e un pezzo del sistema operativo dà la CPU a uno o l'altro, senza chiedendo loro. Questo è chiamato multitasking preventivo . Ogni processo ha il suo spazio di memoria e la MMU intercetta i casi in cui un processo sta tentando di accedere alla memoria di un altro. Tuttavia, questo è solo per rilevare bug, non per sicurezza: tutti i processi possono comunque accedere direttamente all'hardware, e leggere e scrivere la memoria del kernel. Pertanto, non vi è alcuna nozione di "diritti amministrativi" che abbia senso in questi sistemi operativi, e nemmeno loro ci provano.
Nel lignaggio NT, a partire da NT 3.51 e poi NT 4, Windows 2000, XP e versioni successive, esiste una protezione della memoria effettiva e i processi non possono sfuggire al loro spazio indirizzo. Non possono parlare direttamente con l'hardware e non possono accedere alla memoria oltre a ciò che è stato loro assegnato esplicitamente. Ciò implica che quando devono fare qualcosa che superi i limiti del loro spazio di indirizzamento privato, che si tratti di leggere un file o di mostrare cose sullo schermo, devono chiedere al sistema operativo. E il sistema operativo si conformerà, o meno, in base alla propria nozione di diritti di accesso. Qualsiasi processo può quindi avere "diritti di amministratore" o meno; in caso contrario, un numero di operazioni verrà rifiutato con un errore di "accesso negato".
Questo vale anche per gli eseguibili MS-DOS. Sotto la linea di sistemi NT, gli eseguibili MS-DOS funzionano con un modello di indirizzamento a 16 bit, il che significa che "vedono" uno spazio di indirizzamento di circa un megabyte (1114096 byte, precisamente) in cui il sistema operativo emula una vecchia versione MS-DOS - il processo crede che sia solo nella macchina; ma quando accede ai file parlando con MS-DOS emulato, le chiamate vengono reindirizzate al normale kernel (32 bit), che deciderà se accettarle o meno, in base ai diritti di accesso concessi a MS-DOS processo, in particolare se è stato eseguito con diritti di amministratore o meno.
Si noti che l'esecuzione di codice a 16 bit in un sistema operativo a 32 bit richiede l'uso della modalità VM86 . Questa modalità è non supportata dalla moderna CPU x86 quando viene eseguita in modalità a 64 bit (nota anche come "modalità lunga"), pertanto l'esecuzione di processi MS-DOS a 16 bit non è supportata nelle versioni a 64 bit di Windows, a meno che non si aggiunga un ulteriore livello di emulazione della CPU come DOSBox .
Riepilogo: gli eseguibili a 16 bit non hanno diritti di amministratore automatici in DOS / Windows. Le vecchie versioni del sistema operativo non hanno tale nozione; su versioni Windows che supportano un concetto di diritti di amministrazione, un eseguibile a 16 bit avrà tali diritti solo se esplicitamente concesso, se può essere eseguito a tutti, il che non è più il caso con architetture a 64 bit.