tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^3: Unicode変換について
投稿日: 2004/11/08(Mon) 10:31
投稿者魔界の仮面弁士
> APIのNetUserGetLocalGroups関数を使用しています。
> この関数はサーバー名とユーザー名の引数をUnicodeで渡さなければならず、
> StrConv関数を使用していました。

VB6で Unicode を渡すなら、StrConv を使うのではなく、Declare側を
Private Declare Sub foo Lib "dllname" (ByRef x As Byte)
などのように、Byte型に対する参照で宣言しておき、
  Dim B() As Byte
  B = "文字列"
  foo B(0)
のように呼び出す方が良いかと。


で、VB.NETの場合は、宣言時に Auto / Unicode / ANSI にて文字列の扱いを明示できるので、
Private Declare Unicode Sub foo Lib "dllname" (ByVal x As String)
のように、Unicode修飾子を指定しておけば、
  Dim S As String = "文字列"
  foo(S)
といった感じで、String型をそのまま渡す事が可能かと思います。


> それともほかにこのAPI関数を使わずに、Administrator権限を判定できる方法があるのでしょうか?

これで良いのかな…。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If Array.IndexOf(GetRoles(), "BUILTIN\Administrators") >= 0 Then
        MessageBox.Show("管理者権限があります。")
    Else
        MessageBox.Show("Administratorsグループのメンバではありません。")
    End If
End Sub

Private Function GetRoles() As String()
    Return GetRoles(System.Security.Principal.WindowsIdentity.GetCurrent())
End Function

Private Function GetRoles(ByVal winIdentity As System.Security.Principal.WindowsIdentity) As String()
    Return DirectCast(winIdentity.GetType().InvokeMember("_GetRoles", Reflection.BindingFlags.Static Or Reflection.BindingFlags.InvokeMethod Or Reflection.BindingFlags.NonPublic, Nothing, winIdentity, New Object() {winIdentity.Token}, Nothing), String())
End Function

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。