2011-08-31 10 views
8

現在のMatlabセッションがWindows上で昇格された特権で実行されている(つまり、ユーザが "管理者として実行"で起動した)かどうかを検出したいと考えています。理想的には、このソリューションはXPとWindows 7でも動作しますが、必要に応じて2つのソリューションを用意しています。MatlabがWindowsで昇格された権限で実行されているかどうかを確認できますか?

This答えは、Matlabの.NET外部インターフェイス(少なくともVista以降)で必要な情報を得ることができますが、もっと「ネイティブ」なMatlabソリューションがあるかどうか疑問です。

+0

純粋なJavaコードで質問に答えることはできますか?その後、もっと "ネイティブ"な解決策があるかもしれません(私は、あなたがインストールするために外部ライブラリを必要としないものと思われます)。 – John

答えて

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マシンで動作します。

+0

優れています。ありがとうございました! –

+0

質問に「ブリッジ」対「外部インターフェイス」の混乱を修正しました。 –

関連する問題