If someone aware please share your ideas.
Thank you.
Logoff winNT user programmatically (from Java)
-
- Уже с Приветом
- Posts: 108
- Joined: 10 Oct 1999 09:01
- Location: Staten Island, NY
-
- Уже с Приветом
- Posts: 27652
- Joined: 15 Jul 2002 17:05
- Location: MD
-
- Уже с Приветом
- Posts: 108
- Joined: 10 Oct 1999 09:01
- Location: Staten Island, NY
Vaduz, can you please tell me where i am wrong:
class Logoff {
public static void main(String [] str) {
Win32.ExitWindowsEx(0, 0);
}
}
public class Win32
{
/**
* @dll.import("user32",auto)
*/
public static native boolean ExitWindowsEx(int uFlags, int dwReserved);
}
Error:
java.lang.UnsatisfiedLinkError: ExitWindowsEx
at Win32.ExitWindowsEx(Native Method)
at Logoff.main(Logoff.java:3)
Exception in thread "main"
Tool completed with exit code 1
Thank you.
class Logoff {
public static void main(String [] str) {
Win32.ExitWindowsEx(0, 0);
}
}
public class Win32
{
/**
* @dll.import("user32",auto)
*/
public static native boolean ExitWindowsEx(int uFlags, int dwReserved);
}
Error:
java.lang.UnsatisfiedLinkError: ExitWindowsEx
at Win32.ExitWindowsEx(Native Method)
at Logoff.main(Logoff.java:3)
Exception in thread "main"
Tool completed with exit code 1
Thank you.
-
- Уже с Приветом
- Posts: 27652
- Joined: 15 Jul 2002 17:05
- Location: MD
/**
* @dll.import("user32",auto)
*/
Наверное, нужно dll подгрузить. Как в VJ++ не знаю, а вообще
* @dll.import("user32",auto)
*/
Наверное, нужно dll подгрузить. Как в VJ++ не знаю, а вообще
Code: Select all
static { System.loadLibrary("my_dll"); }
-
- Уже с Приветом
- Posts: 108
- Joined: 10 Oct 1999 09:01
- Location: Staten Island, NY
-
- Уже с Приветом
- Posts: 27652
- Joined: 15 Jul 2002 17:05
- Location: MD
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
nperm wrote:I changed it to
public class Win32
{
static { System.loadLibrary("user32"); }
public static native boolean ExitWindowsEx(int uFlags, int dwReserved);
}
and got the same message.
Thanks anyway.
AFAIR you can't call random method in random DLL/SO.
Did you look here?
http://developer.java.sun.com/developer ... tml#native
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
vaduz wrote:Надо звать A. Fig Lee - он жаваписец.
( Я бы сделал сначала пустую dll-ку и попробовал ее подключить, а потом уже туда уже добавил бы вызов ExitWindowsEx).
Точно. Напрямую звать нельзя.
1. Сделать примерно так:
public class Win32
{
public static native boolean KajukWindows();
static
{
System.LoadLibrary("kajuk");
}
}
2. Run javah.
3. Посмотреть header file который состряпала javah и убедится что имя пакеджа на месте в названии вызова процедуры, если ето у Вас в пакедше.
4. Пишем имплементацию на C/C++ для функции KajukWindows и компайлим ее с аутпут именем kajuk.dll
Внутри функции KajukWindows() загружаем user32.dll и зовем ExitWindowsEx с параметрами какие надо.
5. компайлим ету библиотеку.
6. Запускаем, если не работает - в параметре к
java добавляем -Djava.library=PATH_TO_KAJUK ну и прочие PATH по вкусу.
Теория:
http://java.sun.com/docs/books/tutorial/native1.1/
Верить нельзя никому - даже себе. Мне - можно!
-
- Уже с Приветом
- Posts: 108
- Joined: 10 Oct 1999 09:01
- Location: Staten Island, NY
Thanks to Fig Lee and everyone.
Nepomernym trudom byl naiden logoff.exe for winNT that fits perfectly our needs.
when it is called, it just logoff without any silly interfaces (the same way as it is in winXP).
it is in there under logoff subtitle:
http://wwwthep.physik.uni-mainz.de/~frink/nt.html
Nepomernym trudom byl naiden logoff.exe for winNT that fits perfectly our needs.
when it is called, it just logoff without any silly interfaces (the same way as it is in winXP).
it is in there under logoff subtitle:
http://wwwthep.physik.uni-mainz.de/~frink/nt.html
-
- Posts: 14
- Joined: 04 Jun 2001 09:01
- Location: Pandora's box
logoff.exe, shutdown.exe, poweroff.exe reboot.exe длиной 1KB
nperm wrote: Nepomernym trudom byl naiden logoff.exe for winNT that fits perfectly our needs.
when it is called, it just logoff without any silly interfaces (the same way as it is in winXP).
it is in there under logoff subtitle:
http://wwwthep.physik.uni-mainz.de/~frink/nt.html
Не очень понимаю, зачем было заморачиваться с такой монструозной и специфической вещью, как Ява, если вам на самом деле нужна была всего лишь консольная утилита, делающая log off. Так бы и сказали сразу.
Кстати, в результате "непомерного труда" вы нашли довольно странную вещь -- утилиту, которая делает (всего лишь) 1 системный вызов, размером 80 (!!) kB, при этом версии (!) V0.1 PRE-BETA (!!).
Вы бы сказали сразу, чтО вам нужно, я б вам дал logoff.exe размером 1 kB (1088 Bytes), а также, для комплекта, poweroff.exe, reboot.exe и shutdown.exe. Мои утилиты умнее той рабоче-крестьянской 80-килобайтной, т. к. вначале сами себе выставляют привилегию SeShutdownPrivilege, без которой сделать poweroff/reboot/shutdown не получится.
logoff.exe
poweroff.exe
shutdown.exe
reboot.exe
-
- Уже с Приветом
- Posts: 12072
- Joined: 17 Nov 2002 03:41
- Location: английская колония
Re: logoff.exe, shutdown.exe, poweroff.exe reboot.exe длиной 1KB
hb wrote:nperm wrote: Nepomernym trudom byl naiden logoff.exe for winNT that fits perfectly our needs.
when it is called, it just logoff without any silly interfaces (the same way as it is in winXP).
it is in there under logoff subtitle:
http://wwwthep.physik.uni-mainz.de/~frink/nt.html
Не очень понимаю, зачем было заморачиваться с такой монструозной и специфической вещью, как Ява, если вам на самом деле нужна была всего лишь консольная утилита, делающая log off. Так бы и сказали сразу.
А откуда ето следует? - что
на самом деле нужна была всего лишь консольная утилита, делающая log off
Верить нельзя никому - даже себе. Мне - можно!
-
- Posts: 14
- Joined: 04 Jun 2001 09:01
- Location: Pandora's box
Re: logoff.exe, shutdown.exe, poweroff.exe reboot.exe длиной 1KB
A. Fig Lee wrote:А откуда ето следует? - чтоhb wrote:Не очень понимаю, зачем было заморачиваться с такой монструозной и специфической вещью, как Ява, если вам на самом деле нужна была всего лишь консольная утилита, делающая log off.nperm wrote: Nepomernym trudom byl naiden logoff.exe for winNT that fits perfectly our needs.на самом деле нужна была всего лишь консольная утилита, делающая log off
На эту мысль меня навели те слова Mr. nperm, что выделены зеленым. Я мог понять и неправильно, конечно. В любом случае, logoff.exe объемом 80 КБайт версии (какие тут на хрен версии) 0.1 pre beta -- это анекдот. Для log off, AFAIR, не нужно править Access Token процесса, достаточно банального ExitWindowsEx. Длина _кода_ такой программы -- 17 байт.
Code: Select all
push 0
push EWX_LOGOFF
call ExitWindowsEx
push eax ; exit code
call ExitProcess
(При желании действовать по рабоче-крестьянски, т. е. убивать незакрывающиеся программы, нужно push EWX_LOGOFF заменить на push EWX_LOGOFF | EWX_FORCEIFHUNG )