Kan jeg afgøre, om Matlab kører som med forhøjede rettigheder i Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne opdage, om den aktuelle Matlab-session kører med forhøjede rettigheder (dvs. brugeren startede den med 'Kør som administrator') under Windows. Ideelt set ville løsningen fungere på XP og Windows 7, men jeg er glad for at have to løsninger, hvis det er nødvendigt.


Dette svar antyder, at jeg muligvis kan få de oplysninger, jeg har brug for via den. Net eksterne interface fra Matlab (i hvert fald til Vista og senere), men jeg undrer mig over, om der er en mere 'native' Matlab-løsning.]]

Bedste reference


'Matlab. NET Bridge' er for at gå den anden vej - kalder Matlab fra .NET. Calling. NET klasser fra Matlab kan gøres ret direkte ved hjælp af .NET eksterne grænseflader support.


function out = isWindowsAdmin()
\%ISWINDOWSADMIN True if this user is in admin role.
wi = System.Security.Principal.WindowsIdentity.GetCurrent();
wp = System.Security.Principal.WindowsPrincipal(wi);
out = wp.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);


Det skal arbejde på enhver Windows-version med .NET installeret. Jo mere 'indfødt' måde ville sandsynligvis kræve at skrive en MEX for at kalde Win32 API funktioner, hvilket ville være mere arbejde. Fungerer på min XP-maskine.