Mam narzędzie, które używam do programowego tworzenia lokalnych kont użytkowników, co następuje:LoadUserProfile nie tworząc lokalny profil użytkownika, gdy nie istnieje [C#]
DirectoryEntry NewUser = dirEntryLocalMachine.Children.Add("UserName", "user");
NewUser.Invoke("SetPassword", new object[] { "Passsord" });
NewUser.Invoke("Put", new object[] { "Description", "Description" });
NewUser.CommitChanges();
Konto jest tworzone w porządku, ale w tym momencie profil użytkownika nie istnieje (brak HKEY CURRENT USER, no Documents & Ustawienia, itd ...), robiłem pewne badania tego i znalazłem następujący artykuł MSDN, który mówi, że wywołanie LoadUserProfile (...) faktycznie stworzy profil jeśli nie istnieje:
How To Programmatically Cause the Creation of a User's Profile
Więc dodałem kod w następujący sposób:
IntPtr hToken = IntPtr.Zero;
bool bLogon = LogonUser(
sName,
sDomain,
sPassword,
LOGON32_LOGON_NETWORK,
LOGON32_PROVIDER_DEFAULT,
out hToken
);
PROFILEINFO profileInfo = new PROFILEINFO();
profileInfo.dwSize = Marshal.SizeOf(profileInfo);
profileInfo.dwFlags = 1;
profileInfo.lpUserName = sName;
bool bLoad = LoadUserProfile(hToken, ref profileInfo);
Teraz zarówno bLogon i bLoad są prawdziwe, nie występują żadne wyjątki, wszystko „wydaje się”, aby działać poprawnie ... Zawartość profileInfo nie są aktualizowane (I would założyłem, że pole jak .lpProfilePath powinno mieć dobre wartości) i GetUserProfileDirectory() nie może znaleźć ścieżki (oczywiście - nie istnieje) - Sprawdzam również ręcznie i nie ma nic w "ustawieniach dokumentów" dla nowego konta "ustawienia &".
Ktoś ma jakieś wskazówki co do tego, co robię źle?
Każda pomoc będzie mile widziana. Dzięki,
Czy na pewno uruchamiasz program w administracji administracyjnej? –