Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: CL | DM;

Вниз

имя пользователя   Найти похожие ветки 

 
lehich ©   (2004-05-18 11:54) [0]

каким образом получить имя активной учетной записи???
реально ли получить список всех учетных записей???

заранее премного благодарен...


 
Игорь Шевченко ©   (2004-05-18 12:15) [1]

1) GetUserName
2) NetUserEnum


 
lehich ©   (2004-05-18 12:17) [2]

сенкс... респект...)))


 
lehich ©   (2004-05-18 12:35) [3]

я конечно дико извиняюсь за глупый вопрос, но почитав справку дельфи ничего не понял... делаю присваивание:
name := GetUserName;
выскакивает ошибка:
[Error] log.dpr(35): Undeclared identifier: "GetUserName"
подскажите пожалуйста что не так???


 
clickmaker ©   (2004-05-18 14:31) [4]


> делаю присваивание

кто разрешил?!


 
lehich ©   (2004-05-18 15:54) [5]

не надо юродстововать... лучше направьте на путь истинный...))))


 
evvcom ©   (2004-05-18 16:07) [6]

А чего "юродствовать"? Действительно нельзя так присваивать. Из Win32 API:
BOOL GetUserName(

   LPTSTR lpBuffer, // address of name buffer
   LPDWORD nSize  // address of size of name buffer
  );

Значит BoolResult := GetUserName(name, size);
Но перед этим надо выделить память размером size для name и в uses прописать Windows, хотя этот модуль прописывается везде автоматом.


 
lehich ©   (2004-05-18 16:18) [7]

так нифига не понял...((((((

в самом теле программы прописать:
BOOL GetUserName(

  LPTSTR lpBuffer, // address of name buffer
  LPDWORD nSize  // address of size of name buffer
 );
а потом можно будет сделать присваивание?
а какой адрес ставить (address of name buffer и address of size of name buffer) ???? GetUserName(name, size) NAME где прописывать???


 
lehich ©   (2004-05-18 16:55) [8]

и параллельно возник еще один вопрос:
как узнать имя пользователя под учетной записью которого сидишь в данный момент?


 
clickmaker ©   (2004-05-18 17:44) [9]

GetUserName + NetUserGetInfo


 
lehich ©   (2004-05-18 17:56) [10]

2clickmaker хех.... добрая душа...))))) ответь тогда плыз на предыдущий мой месс...))))


 
Игорь Шевченко ©   (2004-05-18 18:07) [11]

Книги, F1, examples - рулез фарева.


 
DVM   (2004-05-18 18:48) [12]


>  [7] lehich ©   (18.05.04 16:18)

Вообще то неплохо было бы книжки почитать вначале.
Но да ладно.
Никаго присваивания делать нельзя. Функция возвращает же BOOL, а не строку.
Вначале надо завести переменную типа PChar и выделить под нее память (GetMem) в нужном количестве (скажем 255 символов). Затем вызвать данную функцию, указав эту переменную и размер буфера (255 в нашем случае). В нашей переменной окажется результат. Его мы используем (скопируем например в переменную типа string), и затем не забудем освободить память (FreeMem).
Так происходит в WinApi работа почти со всеми функциями, результатом которых является строка.


 
lehich ©   (2004-05-19 09:07) [13]

всем спасибо большое за помощь и уроки...))))) бум учиться дальше...)))


 
lehich ©   (2004-05-19 10:22) [14]

тыкс... приложение консольное... прописываю в uses System т.к. GetMem использует этот модуль... далее описываю переменную X :PChar; далее

GetMem (X, 255);
GetUserName (X, 255);
LogData.user := X; // LogData.user :String;
FreeMem (X); //посмотрел в хелпнике что не обязательно указывать размер, можно же и так???

в конечном результате получаем:
[Error] log.dpr(36): Types of actual and formal var parameters must be identical
понимаю что несовпадение параметров при использовании GetUserName... блинство... тяжко как-то у меня WinAPI идет...(((( в чем ошибку допустил???

Заранее премного благодарен...


 
Плохиш   (2004-05-19 10:34) [15]

>lehich ©   (19.05.04 10:22) [14]

Заменяешь GetMem/FreeMem на StrAlloc/StrDispose, соответственно.


 
NAlexey ©   (2004-05-19 10:48) [16]

>Плохиш   (19.05.04 10:34) [15]
А вот и неправда, ошибочка не в этом. StrAlloc и StrDispose вообще backward compatibility routines.


 
Игорь Шевченко ©   (2004-05-19 10:49) [17]

Код надо приводить целиком, с указанием строки. Нам гадать, где у тебя строка 36 или как ?


 
lehich ©   (2004-05-19 10:52) [18]

я же написал, что ошибка при использовании GetUserName, следовательно ошибка в строке:
GetUserName (X, 255);


 
NAlexey ©   (2004-05-19 11:07) [19]

Начало - lehich ©   (18.05.04 11:54)  
Еще ищем решение - lehich ©   (19.05.04 10:52) [18]
Сутки!!!!


 
NAlexey ©   (2004-05-19 11:21) [20]


procedure TForm1.Button1Click(Sender: TObject);
const
 MAX_USERNAME = 256;
var
 User: array[0..MAX_USERNAME] of Char;
 Size: Cardinal;
begin
 Size:= MAX_USERNAME + 1;
 if GetUserName(User, Size) then
   ShowMessage(StrPas(User));
end;


 
lehich ©   (2004-05-19 11:26) [21]

2NAlexey спасибо тебе добрый человек...))))



Страницы: 1 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.041 c
3-1085580374
Opilki_Inside
2004-05-26 18:06
2004.06.27
Сложный отчет в формате RTF


4-1084877446
DeMoN_Astra
2004-05-18 14:50
2004.06.27
Sheduler


1-1087234669
Oxer
2004-06-14 21:37
2004.06.27
Файл помощи


1-1086884426
lena19
2004-06-10 20:20
2004.06.27
как разделить строку на подстроки определенной длинны


14-1086660624
Думкин
2004-06-08 06:10
2004.06.27
C днем рождения! 8 июня