我想检测当前的Matlab会话是否在Windows下以提升的权限运行(即用户以“以管理员身份运行”启动它)。理想情况下,该解决方案适用于XP和Windows 7,但如果有必要,我很乐意提供两种解决方案。
This回答表明我可以通过Matlab的.Net外部接口获取我需要的信息(至少对于Vista及更高版本),但我想知道是否还有更多“原生” “Matlab解决方案。
答案 0 :(得分:7)
“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机器。