【问题标题】:Can I determine if Matlab is running as with elevated privileges in Windows?我可以确定 Matlab 是否在 Windows 中以提升的权限运行?
【发布时间】:2011-11-07 19:16:16
【问题描述】:

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

This 回答表明我可以通过 Matlab 的 .Net 外部接口获取我需要的信息(至少对于 Vista 及更高版本),但我想知道是否有更“原生”的 Matlab解决方案。

【问题讨论】:

  • 你能用纯java代码回答你的问题吗?那么可能会有一个更“原生”的解决方案(我假设你的意思是,一个不需要安装任何外部库的解决方案......)

标签: windows matlab uac


【解决方案1】:

“Matlab .NET 桥”用于另一种方式 - 从 .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 机器上工作。

【讨论】:

  • 我更正了问题中“桥”与“外部接口”的混淆。
猜你喜欢
  • 1970-01-01
  • 2010-11-01
  • 2013-11-09
  • 1970-01-01
  • 2013-08-14
  • 2022-09-28
  • 2011-09-15
  • 1970-01-01
相关资源
最近更新 更多