рд╢реБрдн рджреЛрдкрд╣рд░ рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ JNA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдХреЗ рддрд╣рдд рдХреЛрдб рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПред
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдореВрд▓реНрдп
рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рддрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рддрд╣рдд рд╡рд░реНрддрдорд╛рди рдереНрд░реЗрдб рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЗрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╛рдВрдЫрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рдбреЛрдореЗрди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдПрдХ рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреБрдЫ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рд╕реЗ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рддрдХ рдкрд╣реБрдВрдЪ NTFS рдЕрдиреБрдорддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред рдФрд░ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрд╡рдпрдВ рдЗрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ (рдЬреЛ рд╕рд╣реА рд╣реИ - рд╕рд░реНрд╡рд░ рдПрдХ рдЕрд▓рдЧ рдЦрд╛рддреЗ рдХреЗ рддрд╣рдд рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдлрд╝реЛрд▓реНрдбрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИ)ред рд▓реЗрдХрд┐рди рддрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЗрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рд╕рд╡рд╛рд▓ рдЫреЛрдЯрд╛ рд╣реИ - рд╕рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рддрд╣рдд рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдереНрд░реЗрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдереНрд░реЗрдб / рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдмрдирд╛рддреЗ рд╣реИрдВред MSDN рдФрд░ рдлрд╝реЛрд░рдо рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ:
1) CreateProcessWithLogonW - рдЖрд╡рд╢реНрдпрдХ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рддрд╣рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреБрд░рдВрдд рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рдФрд░ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ - рдХреЛрдб рдХреА рддреАрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
2) рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ - рд▓реЙрдЧрдСрдирд╕рд░, рдХреНрд░рд┐рдПрдЯрдереНрд░реЗрдб, рд╕реЗрдЯрдереНрд░реЗрдбрдЯреЛрдХрди, рд░рд┐рдЬреНрдпреВрдореЗрдереНрд░реЗрдбред рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рддрд╣рдд рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдПрдХ рдиреАрдВрдж рдзрд╛рдЧрд╛ рдмрдирд╛рдПрдВред рддреАрд╕рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЪреМрдереЗ рдореЗрдВ, рдмрдирд╛рдП рдЧрдП рд╕реЛрдиреЗ рдХреЗ рдзрд╛рдЧреЗ рдХреЛ рдЪрд▓рд╛рдПрдВред
рд╣рдореЗрдВ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджреНрдпрдкрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬрд╛рд╡рд╛ рд╕реЗ рдореВрд▓ рдХреЛрдб рдХреНрдпрд╛ рдЪрд▓рд╛рдПрдВрдЧреЗред рдореИрдВ рджреЛ рддрд░реАрдХреЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ - рдЬреЗрдПрдирдЖрдИ рдФрд░ рдЬреЗрдПрдирдПред рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ "рджреЗрд╢реА" рдФрд░ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ (рдХреБрдЫ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░)ред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рдмрд╛рд╣рд░реА рд╢рд░реАрд░ рдХреА рдЖрд╡рд╛рдЬрд╛рд╣реА рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореВрд▓ рдХреЛрдб рд▓рд┐рдЦрдирд╛, рдпрджреНрдпрдкрд┐ рд╕рд░рд▓, рдПрдХ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡рд╣ рд╕рдм - рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЗрдПрдирдП рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдХрдИ рдкреНрд░рдХрд╛рд░ рдФрд░ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрдгрд┐рдд рд╣реИрдВред
JNA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ jna.jar рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореБрдЦреНрдп JNA рдХреЛрдб рдФрд░ platform.jar рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИ - рдореИрдХ, рд╡рд┐рди, * рдирд┐рдХреНрд╕ред
рдЕрдм рдХреЛрдбрд┐рдВрдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЙрд▓ рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ - рджреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдПрдВ - MoreKernel32, рдЬреЛ рдордВрдЪ рд╕реЗ рдХрд░реНрдиреЗрд▓ 32 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдФрд░ MoreAdvapi32, рдЬреЛ рдПрдХ рд╣реА рдЬрд╛рд░ рд╕реЗ Advapi32 рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
рд╣рдо рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
public interface MoreAdvapi32 extends Advapi32 { static final MoreAdvapi32 instance = (MoreAdvapi32) Native.loadLibrary("advapi32", MoreAdvapi32.class, W32APIOptions.DEFAULT_OPTIONS); Boolean SetThreadToken(HANDLEByReference pointer, HANDLE Token); }
public interface MoreKernel32 extends Kernel32 { static final MoreKernel32 instance = (MoreKernel32) Native.loadLibrary("kernel32", MoreKernel32.class,W32APIOptions.DEFAULT_OPTIONS); DWORD ResumeThread(WinNT.HANDLE hThread); WinNT.HANDLE CreateThread(Pointer lpThreadAttributes, Pointer dwStackSize, Callback lpStartAddress, Pointer lpParameter, DWORD dwCreationFlags, Pointer lpThreadId); }
LogonUser рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Advapi32 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЬреЗрдПрдирдП рдХреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреЗ рдирд╛рдо рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрд▓ рдЦрд╛рдПрдВред рдлрд┐рд░ рдЖрдкрдХреЛ рдирд┐рдореНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде Native.loadLibrary рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд╛рдо, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕ рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореИрдк рд╣реЛрдЧреА, рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рд╡рд┐рдХрд▓реНрдкред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛:
1) рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ред
2) рд╣рдордиреЗ рдХрд░реНрдиреЗрд▓ 32 рдФрд░ рдПрдбрд╡рд╛рдкреА 32 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ Native.loadLibrary рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдореИрдк рдХрд┐рдпрд╛ред рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЕрдм рджреЛ рд╡рд░реНрдЧреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдереНрд░реЗрдбрдлрд╝реЛрди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдпрд╣ рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдкрдврд╝рдиреЗ рдФрд░ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рдХреЙрд▓рдмреИрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреЙрд▓рдмреИрдХ () рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЬреЗрдПрдирдП рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдХрд┐ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рд╡рд░реНрдЧ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХреЙрд▓рдмреИрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЙрд▓ рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдмрддрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
package jna; import java.io.FileInputStream; import java.io.FileNotFoundException; import com.sun.jna.Callback; public class ThreadFunc implements Callback { private String fileName; private FileInputStream in; public FileInputStream getIn() { return in; } public String getFile() { return fileName; } public void setFile(String file) { this.fileName = file; } public void callback() { File testAccess = new File(fileName); if (testAccess.canRead()) { System.out.println(" "); try { in = new FileInputStream(fileName); } catch (FileNotFoundException e) { e.printStackTrace(); } }else{ System.out.println(" "); } } }
рджреВрд╕рд░реА JnaTest рдХреНрд▓рд╛рд╕ рдореБрдЦреНрдп рд╣реИ - рдпрд╣рд╛рдВ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ, рдЯреЛрдХрди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЗрд╕ рдкреВрд░реЗ рдЬрд┐рдореНрдк рдХреЗ рд▓рд┐рдП - рдлрд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдирд╛ред
package jna; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.FileChannel; import com.sun.jna.platform.win32.Advapi32; import com.sun.jna.platform.win32.WinBase; import com.sun.jna.platform.win32.WinDef.DWORD; import com.sun.jna.platform.win32.WinNT.HANDLE; import com.sun.jna.platform.win32.WinNT.HANDLEByReference; public class JnaTest { private static final String fileName = "D:\\user1\\hitman.jpg"; public static void main(String[] args) { FileInputStream in = null; FileOutputStream out = null; FileChannel fcin = null; FileChannel fcout = null; try { File testAccess = new File(fileName); if (testAccess.canRead()) { System.out.println(" "); }else{ System.out.println(" "); }
рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕реА рдлрд╛рдЗрд▓ рдЦреЛрд▓рдиреА рд╣реИред рдлрд┐рд░ рд╣рдо CreateThread рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн рдФрд░ CREATE_SUSPENDED рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ - рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдереНрд░реЗрдб "рдиреАрдВрдж" рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рд╣рдо рдзрд╛рдЧреЗ рдХреЛ рд╕рдВрднрд╛рд▓ рд▓реЗрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИрдВрдбрд▓ рдЕрд╢рдХреНрдд рд╣реИ, рддреЛ рд╕реНрдЯреНрд░реАрдо рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреЛрдб рдХрд╛ рджреВрд╕рд░рд╛ рдмреНрд▓реЙрдХ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдпрд╣рд╛рдВ, рд▓реЙрдЧрдСрдирд╕рд░ рдлрд╝рдВрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╣реИрдВрдбрд▓ рд╕реЗ рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреЛрдХрди рддрдм рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд╝рдВрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд▓реЙрдЧрд┐рди, рдбреЛрдореЗрди, рдкрд╛рд╕рд╡рд░реНрдб, рдореЗрдореЛрд░реА рдкреЙрдЗрдВрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЯреЛрдХрди рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗред рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдпрд╛ рддреЛ рд╕рд╣реА рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреЛрдХрди рдпрд╛ рдЧрд▓рдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░, рдпрджрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред
рдЕрдЧрд▓рд╛ рдмреНрд▓реЙрдХ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рд╡рд╣рд╛рдВ рд╣рдо рд╕реНрдЯреНрд░реАрдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдЯреЛрдХрди рдмрдВрдж рдХрд░реЗрдВред
рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдирд╛ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ - рд╣рдореЗрдВ FileInputStream рдФрд░ FileOutputStream рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдЪреИрдирд▓ рдорд┐рд▓рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред
рд╕рдВрд╕рд╛рдзрди рдмрдВрдж рдорд╛рдирдХ рд╣реИ, рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ - рдЕрдВрдд рдореЗрдВ рдмреНрд▓реЙрдХ рдореЗрдВред
рдЕрдм рдХреБрдЫ рдиреЛрдЯ:
1) рдПрдХ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЙрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдкреВрд░реЗ рдЬреАрд╡рди рдХрд╛рд▓ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рднрд▓реЗ рд╣реА рдЗрд╕ рд╡рд░реНрдЧ рддрдХ рдмрд╛рд╣рд░реА рдкрд╣реБрдВрдЪ рдХреА рдЬрд░реВрд░рдд рди рд╣реЛред рдЕрдиреНрдпрдерд╛, рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрдХреНрд╖рд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЧрд▓рдд рдбреЗрдЯрд╛ рд╕реЗ рднрд░реА рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реЛрдЧрд╛ред рджрд░рдЕрд╕рд▓, рдпрд╣ JNA рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрд╛рдж рдореЗрдВ рд╣реА рдкрддрд╛ рдЪрд▓рд╛ рдЬрдм рдореИрдВрдиреЗ рдХреБрдЫ рдПрдХреНрд╕реЗрд╕ рдПрд░рд░ рдХреЛ рдкрдХрдбрд╝рд╛ред
2) рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдВрд╕рд╛рдзрди рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдлрд╝рд╛рдЗрд▓ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЦреБрд▓реА рд╣реИ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдпрдВ рдПрдХ рдЕрдиреНрдп рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рдеред
рдирд┐рд╖реНрдкрд╛рджрди рдЙрджрд╛рд╣рд░рдг
рдЕрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред
рдлрд┐рд░ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ:

рдЕрдВрдЬреАрд░ред 1 рдлрд╝реЛрд▓реНрдбрд░ user1

Fig.2 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ user1 рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ

рдЕрдВрдЬреАрд░ред 3 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдПрдВ:
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореБрдЦреНрдп рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдЕрдм рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдо рдПрдХреНрд╕реЗрд╕ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдВрдЬреАрд░ред 4 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдо рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
рдЖрдЗрдП рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ:

рдЕрдВрдЬреАрд░ред 5 рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢
рдЕрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдПрдВ:
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореБрдЦреНрдп рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╕рдВрд╕рд╛рдзрди рд▓рд┐рдВрдХ
JNALogonUserCreateThreadResumeThreadSetThreadToken