DllImport и LookupAccountName
От: bambor  
Дата: 01.03.07 18:55
Оценка:
Немогу корректно импортировать субж, хотя другие функции типа NetShareEnum и т.д.
у меня импортируются и работают

вот примерный код, который не работает


using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;

namespace lookuptest
{
    class Program
    {
        public enum SID_NAME_USE
        {
            SidTypeUser = 1,
            SidTypeGroup,
            SidTypeDomain,
            SidTypeAlias,
            SidTypeWellKnownGroup,
            SidTypeDeletedAccount,
            SidTypeInvalid,
            SidTypeUnknown,
            SidTypeComputer
        };

        [DllImport("advapi32.dll", EntryPoint = "LookupAccountName", CharSet = CharSet.Auto)]
        public static extern bool LookupAccountName(
            [In, MarshalAs(UnmanagedType.LPTStr)] String lpSystemName,
            [In, MarshalAs(UnmanagedType.LPTStr)] String lpAccountName,
            [Out,MarshalAs(UnmanagedType.U4)] out UInt32 pSid,
            [In, Out, MarshalAs(UnmanagedType.U4)] ref UInt32 cbSid,
            [Out, MarshalAs(UnmanagedType.LPTStr)] String DomainName,
            [In, Out, MarshalAs(UnmanagedType.U4)] ref UInt32 cbDomainName,
            [Out,MarshalAs(UnmanagedType.U4)] out UInt32 peUse);
        
        static void Main(string[] args)
        {
            UInt32 cbSid = 0;
            UInt32 cbDomainName = 0;
            UInt32 peUse = 0;
            UInt32 pSid = 0;
            String AccountName = "bambor";
            String strNull = (String)null;
            IntPtr ptrNull = (IntPtr)null;
            bool bRes = LookupAccountName((String)null, AccountName, out pSid, ref cbSid, null, ref cbDomainName, out peUse);
            Console.WriteLine("Result {0}, LastError {1}", bRes, Marshal.GetLastWin32Error());
        }
    }
}
Re: DllImport и LookupAccountName
От: bambor  
Дата: 01.03.07 19:10
Оценка:
Или же подскажите другой способ узнать по имени/сиду учетной записи ее тип: пользователь это или группа
Re: DllImport и LookupAccountName
От: nerozero  
Дата: 01.03.07 19:12
Оценка:
Здравствуйте, bambor, Вы писали:

B>Немогу корректно импортировать субж, хотя другие функции типа NetShareEnum и т.д.

B>у меня импортируются и работают

Вот может это поможет?
Re[2]: DllImport и LookupAccountName
От: bambor  
Дата: 02.03.07 18:45
Оценка:
Здравствуйте, nerozero, Вы писали:

N>Вот может это поможет?


Да спасибо, помогло только автор там решил все симпортировать из WinAPI, а можно было
использовать System.Security.Principal.SecurityIdentifier
Re[2]: DllImport и LookupAccountName
От: bambor  
Дата: 03.03.07 18:38
Оценка:
Здравствуйте, nerozero, Вы писали:

N>Здравствуйте, bambor, Вы писали:


B>>Немогу корректно импортировать субж, хотя другие функции типа NetShareEnum и т.д.

B>>у меня импортируются и работают

N>Вот может это поможет?


При более детальном рассмотрении оказалось, что на W2k SP4 импортированная
функция как выдавала ошибку 1332 (No mapping between account names and security IDs was done)) так
и продолжает ее выдавать. При этом на WinXP SP2 все работает. Фреймворк и компилятор используется одинаковый

P.S. В обычном Win32 API-шном приложении Lookup работает
Использовать dll-обертку для этой функции не очень хочется
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.