我可以确定Matlab是否在Windows中以提升的权限运行吗?

Bar*_*ark 8 windows matlab uac

我想检测当前的Matlab会话是否在Windows下以提升的权限运行(即用户使用"以管理员身份运行"启动它).理想情况下,该解决方案适用于XP和Windows 7,但如果有必要,我很高兴有两个解决方案.

这个答案表明我可以通过Matlab的.Net外部接口获得我需要的信息(至少对于Vista及更高版本),但我想知道是否有更"本机"的Matlab解决方案.

And*_*nke 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);
Run Code Online (Sandbox Code Playgroud)

这应该适用于安装了.NET的任何Windows版本.更"本机"的方式可能需要编写一个MEX来调用win32 API函数,这将是更多的工作.适用于我的XP机器.