Немогу корректно импортировать субж, хотя другие функции типа 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());
}
}
}
Или же подскажите другой способ узнать по имени/сиду учетной записи ее тип: пользователь это или группа
Здравствуйте, bambor, Вы писали:
B>Немогу корректно импортировать субж, хотя другие функции типа NetShareEnum и т.д.
B>у меня импортируются и работают
Вот может
это поможет?
Здравствуйте, nerozero, Вы писали:
N>Вот может это поможет?
Да спасибо, помогло только автор там решил все симпортировать из WinAPI, а можно было
использовать System.Security.Principal.SecurityIdentifier
Здравствуйте, 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-обертку для этой функции не очень хочется