Programmatisk oprettelse af Windows-brugerprofil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at gøre noget svarende til, hvad den bruger, der stillede dette spørgsmål, forsøger at gøre:


HTTPS-anmodning fra en referenceleverandør DLL


Hvad angår komponenterne i en brugerprofil, fandt jeg det her. [8]



  • Hvad er den minimale profil, som Windows vil genkende og indlæse?

  • Hvordan opretter og registrerer jeg en profil med Windows?



Mit mål er Windows 7 (Professional eller Enterprise). Jeg er mere af en Linux fyr, så jeg er temmelig clueless når det kommer til programmering på Windows, så vær venlig.


P. S. Er der en måde, jeg kan begynde at udvikle på Linux, så test på Windows uden at bruge en VM?


Dette er det jeg forsøger at gøre



Jeg bygger et profilsynkroniseringsprogram, der skal bruges af folk, der bevæger sig meget, så de ikke behøver at medbringe en bærbar computer overalt. Dette spørgsmål omhandler det tilfælde, hvor brugeren logger ind på en ny computer. Mulige anvendelser er:



  • Erhvervsmænd, der rejser ofte mellem kontorer

  • Studerende, der bruger forskellige computere hver dag

  • Brugere af internetcafeer i fremmede lande

  • Hjembrugere, der ikke kan lide at kopiere filer, når de får en ny computer



Jeg ønsker at give den bedst mulige brugeroplevelse, jeg kan, og det betyder næsten øjeblikkelig profiloprettelse. Roamingprofiler er i bedste fald langsomme og buggy. At lade Windows oprette en profil er ikke rigtig en mulighed, fordi jeg skal gøre brugerdefineret godkendelse (jeg regnede med denne ene ud), og jeg har brug for at kopiere indstillinger fra en server.


Det jeg har brug for er en måde at:



  • Opret kun de absolut nødvendige for brugerens logon

  • Opdater indstillinger fra skyen, hvis profilen er blevet opdateret

  • Få brugeren fra logonskærm til at arbejde på under 30 sekunder (helst meget hurtigere)



Det er det jeg tænker på at gøre:



  • Godkend bruger med server

  • Kontakt Windows-tjenesten til at håndtere profiloprettelse/opdatering

  • Windows-tjenesten vil downloade bare indstillinger, mens profilen oprettes

  • Indstillinger anvendes

  • Bruger er logget ind


Bedste reference


Først og fremmest vil jeg anbefale dig at læse dette om brugerprofiler. [9]


Hovedidéen om brugerprofiler er enkel, og den forbliver uændret fra og med den første version af Windows NT (jeg mener Windows NT 3.1): Brugerprofilen består af den katalogstruktur, der findes på den lokale computer. En fil (såkaldt hive) fra brugerprofilen repræsenterer den aktuelle brugerdel af registreringsdatabasen. Det er vigtigt, at brugeren har fuld adgang til sin brugerprofil. Adgangstilladelsen gemmes ikke kun i filsystemet, men også indeni af registreringsdatabasen. Så for at oprette profilen for brugeren skal man først oprette brugerkontoen, fordi den del af sikkerhedsbeskrivelsen af ​​filer i registryets nøgler skal indeholde brugerens SID (sikkerhedsidentifikator).


Hvis der oprettes ny brugerprofil, vil 'prototype' af brugerprofilen blive brugt som skabelon. Stien til skabelonen, du kan finde i registreringsdatabasen som Default værdi under registretasten HKEY\_LOCAL\_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList. Du kan bruge GetDefaultUserProfileDirectory for at få de samme oplysninger. [10]


For at oprette profilen skal man logge ind med brugerkontoen for at få login-token (se LogonUser med LOGON32\_LOGON\_INTERACTIVE flag for parameteren dwLogonType og derefter bruge LoadUserProfile, som vil oprette den lokale brugerprofil, hvis den ikke er eksisterer for brugeren. Hvis brugeren har en central eller roamingprofil, skal man udfylde den indgående PROFILEINFO struktur lpProfilePath, så den peger på brugerens roamingprofilbane, der er på serveren. For at få stien kan man bruge NetUserGetInfo med [[dwLevel lig med 4. Denne måde er meget gammel og er beskrevet for eksempel her. [11] [12] [13] [14] [15] [16]


Da login-token fra [[LogonUser]] virkelig kun er nødvendig for at få brugerne SID, der er nødvendige for grand bruger tilladelse til sine filer og registreringsnøgler, startede Vista med Microsoft en anden forenklet og meget praktisk API CreateProfile, der erstatter CreateUserProfileEx (som kun eksisterer på Windows XP). [17] [18]


Alt hvad jeg forklarer før er virkelig kun nødvendigt i sjældne situationer . For det meste kun hvis du bruger brugerkontoen til Windows-tjenesten. I standardsituationen bliver brugerprofilen automatisk oprettet ved første interaktive bruger login på computeren.


Hvis du skal foretage nogle ændringer for alle brugere på computeren, f.eks. Efter installationen af ​​ny software, kan du gøre det på mange måder uden at oprette brugerprofiler.


Hvis du forklarer mere præcist hvorfor skal du oprette brugerprofiler, kan jeg nok foreslå dig en alternativ måde at arkivere de samme mål på.

Andre referencer 1


Jeg stillede et meget lignende spørgsmål om ServerFault, og jeg kunne virkelig godt lide svaret jeg kom der. At omskrive, er disse trinene: [19]



  • Opret Windows-tjeneste for at oprette profiler

  • Opret en brugerdefineret ICredentialsProvider og godkend bruger

  • Ring til profiloprettelsen

  • Fortæl Windows for at fortsætte med at logge på



Det ser ud til, at der ikke er nogen direkte måde at tilsidesætte det på, men det virker ret smart, og muligvis den eneste løsning.


Da ingen har kommenteret eller efterladt et svar, ændrer jeg mit spørgsmål lidt.