Могу ли я определить, работает ли Matlab с повышенными привилегиями в Windows? - PullRequest
8 голосов
/ 31 августа 2011

Я хотел бы определить, выполняется ли текущий сеанс Matlab с повышенными привилегиями (т. Е. Пользователь запустил его с «Запуск от имени администратора») в Windows. В идеале решение будет работать на XP и Windows 7, но я рад иметь два решения, если это необходимо.

Этот ответ предполагает, что я могу получить необходимую информацию через внешний интерфейс .Net от Matlab (по крайней мере, для Vista и более поздних версий), но мне интересно, есть ли еще «нативный» раствор Matlab.

1 Ответ

7 голосов
/ 31 августа 2011

"Matlab .NET Bridge" предназначен для того, чтобы пойти другим путем - вызвать Matlab из .NET. Вызов классов .NET из Matlab может быть выполнен довольно напрямую с помощью поддержки внешних интерфейсов .NET.

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);

Это должно работать на любой версии Windows с установленным .NET. Более «родной» способ, вероятно, потребовал бы написания MEX для вызова функций Win32 API, что потребовало бы больше усилий. Работает на моей машине XP.

...