Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Windows XP При смене имени учетной записи ,появляеться проблема ! [D6, Win95/98, WinME, NT4, Win2k, WinXP]


Романов А. ©   (2002-07-18 09:20:00) 

Windows XP При смене имени учетной записи ,появляеться проблема считывания этого имени пользователя в windows xp

практика:
я создал учетную запись в xp , зашел туда ,все гуд
запустил прогу определения имени вход в windows сесию.
он например alex , потом в настройках текущей учетной записи меняю имя alex на tom .. после чего windows у себя визульно поменяла alex на tom. я человек не суевернй ,но все равно делаю перезагрузку виндов ,она теперь спрашивает пароль уже на tom и пропускает меня ,но сного запускаю прогу определения входно имени пользователя в текущей сесии windows ,она дает мне первое имя регистрации текущей учетной записи..т.е. alex , как быть???
как мне быть и что делать?

Как мне из D6 под xp win считать правильное имя учетной записи для входа в систему...Да так что бы эта все корректно работало и с др. версиями windows.


Eugene Lachinov   (2002-07-22 11:19:00) [1]

Это работает на XP, на других системах GetUserName

type
EXTENDED_NAME_FORMAT = (
NameUnknown = 0,
NameFullyQualifiedDN = 1,
NameSamCompatible = 2,
NameDisplay = 3,
NameUniqueId = 6,
NameCanonical = 7,
NameUserPrincipal = 8,
NameCanonicalEx = 9,
NameServicePrincipal = 10
);

var
GetUserNameEx : function (
NameFormat : EXTENDED_NAME_FORMAT;
lpNameBuffer : PWChar;
var nSize : DWord) : Bool; stdcall;

procedure TForm1.Button1Click(Sender: TObject);
var
Buf : array[0..512] of WChar;
dwSize : DWord;
hSecur32 : THandle;
begin
hSecur32 := LoadLibrary("SECUR32.DLL");
if hSecur32 <> 0 then try
@GetUserNameEx := GetProcAddress(hSecur32, "GetUserNameExW");
if @GetUserNameEx <> nil then begin
dwSize := 512;
if GetUserNameEx(NameDisplay, Buf, dwSize) then
ShowMessage(string(Buf))
end
finally
FreeLibrary(hSecur32)
end
end;


Гений   (2002-07-22 07:02:00) [2]

Вопрос конечно интересный ,ну не думаю ,что здесь кто-то тебе ответит на него.


Романов А.   (2002-07-19 06:39:00) [3]

Я же написал ,что считываеться при любом раскладе alex..

а вот функции которые я пробывал

function GetUser: String;
var dwI:DWord;
begin
dwI:=MAX_PATH;
SetLength(Result,MAX_PATH+1);
if GetUserName(PChar(Result),dwI) then
SetLength(Result,StrLen(PChar(Result)))
else SetLength(Result,0);
end;


function GetNetUser: String;
var dwI:DWord;
begin
dwI:=MAX_PATH;
SetLength(Result,MAX_PATH+1);
if WNetGetUser(nil,PChar(Result),dwI)=NO_ERROR then
SetLength(Result,StrLen(PChar(Result)))
else SetLength(Result,0);
end;


Eugene Lachinov   (2002-07-18 13:19:00) [4]

А как оно считывается сейчас ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо