PDA

Просмотр полной версии : проблема с api


asm33
18.05.2006, 18:17
в общем тут такая проблема.
Программа, которуя я написал (на DELPHI )у меня работает нормально, приношу в универ, так начинаются какие то проблемы. То какая нибудь компонента в приложении начинает работыть некорректно, то api функция не срабатывает. В универе та же операционка(виндоус хп), тока там права у юзера ограниченные.

Я так понял, что в зависимости от прав, кодеру доступен опред набор (стандартный), api мне вот интересно знать этот набор, который будет работать даже у юзера с жутко ограниченными правами

nc.STRIEM
18.05.2006, 23:57
а что твоя программа использует? к кокимто системным компанентам или библиотекам обращаеться?
Вобще так бывает при использовании прогой библиотек которые на твоем компе есть а на другой машини нету!
А на той машини стояла среда под которой ты писал свою прогу?

asm33
19.05.2006, 00:20
в общем ничего особенного она и не использует. Главный компонент в моей проге - image(работа с графиками). Вот он работает некорректно + проблемы с видоизменением курсоры мыши.
еще таккая бурда-на тачках о граниченными провами, при запуске файла склеиного joiner`ом запускаетсятолько одно приложение.
Везде стоит win xp sp1 professional

sn0w
19.05.2006, 13:04
2 равновесных варианта: 1) посмотри на конфиге своего прожекта. статически ли он компилирует библиотеки времени исполнения и стандартные багажи. если нет то траблов может быть бесконечное число. 2) привилегии. начиная от уровня пользователя залогиненного в системе и кончая исполняемым кодом. вот например если ты вызовешь ExitWindowsEx на NT машине (даже под админом) без предварительного подключения shutdown-привелегии, то эффекта от этого будет ноль.

например код подключения данной привелегии на си ( дельфю незнаю, извиняй :)) будет выглядеть так:


HANDLE tok;
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJU ST_PRIVILEGES,&tok)) {
LUID luid;
TOKEN_PRIVILEGES tp;
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
tp.PrivilegeCount=1;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid=luid;
AdjustTokenPrivileges(tok,FALSE,&tp,NULL,NULL,NULL);

LookupPrivilegeValue(NULL,SE_SECURITY_NAME,&luid);
tp.PrivilegeCount=1;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid=luid;
AdjustTokenPrivileges(tok,FALSE,&tp,NULL,NULL,NULL);
CloseHandle(tok);
}

asm33
21.05.2006, 18:48
Скорее всего это из за винды глюки(нет необходимых библиотек). Я уж не говорю про win 98 там вообще ни4е работать не будет.

А проблема решается просто-не ипользовать Image, рисовать где нить на форме или на панели. Благо canvas есть почти у всех объектов

nc.STRIEM
22.05.2006, 00:01
1) посмотри на конфиге своего прожекта. статически ли он компилирует библиотеки времени исполнения и стандартные багажи. если нет то траблов может быть бесконечное число.

[/CODE]
Обычно есле библиотеки не подключены статически, то на другой машине где их нет, проэкт как правило не запускаеться вобще!

F1reF0x
20.06.2006, 04:39
В раздел uses что нибдуь дописывал? Или может быть использовал не стандартные компоненты?

Brun
20.06.2006, 21:06
Дай код. А то на пальцах показывать бессмыслено.

asm33
21.06.2006, 01:26
да все я эту проблему решил, просто переписал по другому
Что касается компонент, то я использовал стандартный.

Все проблемы были из за операционки.

Взял 2 дистрибутива.первый англиций второй русифицирован да еще и кострирован (установка Xp до 500 метров еле еле дотягивает), так вот на англицкой все работает на русифицированной нет