我想检测当前的Matlab会话是否以提升的权限运行(即用户在Windows下以“以pipe理员身份运行”启动它)。 理想情况下,解决scheme可以在XP和Windows 7上运行,但是如果有必要的话,我很高兴有两个解决scheme。
这个答案表明,我可以通过Matlab的.Net外部接口(至less在Vista和更高版本中)获得我需要的信息,但是我想知道是否有更“原生”的Matlab解决scheme。
“Matlab .NET Bridge”是用于从.NET调用Matlab的另一种方式。 从Matlab调用.NET类可以直接使用.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);
这应该适用于.NET安装的任何Windows版本。 更“原生”的方式可能需要编写一个MEX来调用win32 API函数,这将是更多的工作。 适用于我的XP机器。