windows - java efterligning

Indlæg af Hanne Mølgaard Plasc

Problem



Vi har en java-proces, der kører som den lokale systembruger på vinduer, der skal have adgang til en fil, der ejes af en anden bruger på systemet. Fra hvad jeg forstår, skal den lokale systembruger have tilladelser til at udgive den bruger. For at gøre dette passerer vi tid og pid af et program, der har adgang til filen og får brugerinformationen (et token) fra det. Så sætter vi token på den aktuelle tråd. Noget sådan:


DuplicateTokenEx(hToken,MAXIMUM\_ALLOWED,NULL,SecurityImpersonation,TokenImpersonation,&hTokenDup);
SetThreadToken(NULL, hTokenDup);


Hvor hToken opnås ved at åbne tråden og derefter behandle via deres ids.
Problemet er, når jeg forsøger at få adgang til en fil, der kun er tilgængelig af brugeren, og ingen andre jeg ikke kan læse den. Jeg får en adgang nægtet fejl. Så spørgsmålet er, om jeg skal kunne få adgang til denne fil via efterligning, og i så fald er dette det korrekte at efterligne en anden bruger, der får en tråd og pid. Jeg tror også, jeg ville se forskellig adfærd mellem Windows 7 og Windows XP.

Bedste reference


Til at begynde med bør du altid teste returværdierne for dine Windows API-opkald.
Først da vil du være sikker på at token faktisk er blevet kopieret og tildelt din proces.


Efterligning kræver nogle privilegier, som jeg ikke virkelig er sikker på, at du ville have, hvis du er en simpel bruger. Jeg formoder, at DuplicateTokenEx-funktionen mislykkes.
Prøv igen med administratorrettigheder (brug værktøjet 'Kør som ...') og lad os vide, hvordan det går.