Сейчас на форуме: Adler, asfa, bartolomeo (+8 невидимых)

 eXeL@B —› Вопросы новичков —› Режим совместимости
Посл.ответ Сообщение

Ранг: 3.0 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 25 мая 2012 02:21
· Личное сообщение · #1

Доброго времени суток, уважаемые форумчане.
Будьте добры подсказать, а возможно даже и носом ткнуть, что из себя представляет режим совместимости в windows, по какому принципу работает, какие dll задействованы и можно ли вообще найти толковые статьи об этом, хотя бы на английском языке?




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 25 мая 2012 03:10
· Личное сообщение · #2

Не знаю, насколько глубоко ты хочешь копать, но cтатей множество, вот например:
http://www.howtogeek.com/howto/10436/using-program-compatibility-mode-in-windows-7/

Search:
Google: windows compatibility mode

-----
Give me a HANDLE and I will move the Earth.




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 25 мая 2012 10:55 · Поправил: Hexxx
· Личное сообщение · #3

plutos пишет:
Google: windows compatibility mode

По такому запросу гуглится херня. Гуглить нужно Shim Engine. В общем совместимость эта достигается набором хуков. Винда сама хучит запускаемое приложение.

Например вот http://kitrap08.blogspot.com/2011/01/shim-engine.html

-----
Реверсивная инженерия - написание кода идентичного натуральному


| Сообщение посчитали полезным: Kylak, Hugo Chaves


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 25 мая 2012 13:43
· Личное сообщение · #4

Ну почему же непременно "херня"? Зачем же так грубо? Мы же не в сортире...
Вот, к примеру,
http://www.woodmann.com/forum/archive/index.php/t-11058.html
(Secrets of the Application Compatilibity Database (SDB))
нашел через windows compatibility mode, хоть и не напрямую...

-----
Give me a HANDLE and I will move the Earth.





Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 25 мая 2012 14:37
· Личное сообщение · #5

--> Link <--

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.


| Сообщение посчитали полезным: Kylak

Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 25 мая 2012 23:19
· Личное сообщение · #6

plutos пишет:
http://www.woodmann.com/forum/archive/index.php/t-11058.html

ага круто, все ссылки там мертвые. Не ужто проделки ZOG...

http://www.openrce.org/blog/view/959/Secrets_of_the_Application_Compatilibity_Database_(SDB)_-_Part_3 вот кусочек сохранился.

plutos пишет:
Ну почему же непременно "херня"?

потому что:
plutos пишет:
хоть и не напрямую


ClockMan пишет:
--> Link <--

Цитата с того линка:
Code:
  1. Вспомнив, что Виста основана на ядре от Server 2003


Еще одна:
Code:
  1. Вот в эту часть кода лучше не лезть. Оконная подсистема Висты претерпела значительные изменения, но разобраться какие именно изменения разваливают ранее написанную программу, намного сложнее, чем кажется.

ксакеп как всегда делает глубокий анализ и добирается до сути

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 29.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 12 июня 2012 21:56
· Личное сообщение · #7

поглядел в сети функцию по запуску чужого ехе с правами администратора, даже если сам запускной ехе не имеет прав:
Code:
  1. Procedure.i LaunchAndElevate(Exe.s,Parameters.s="")
  2.   Protected ExecFile.SHELLEXECUTEINFO
  3.   If Exe = ""
  4.     Exe = ProgramFilename()
  5.   EndIf
  6.   ExecFile\cbSize = SizeOf(ExecFile)
  7.   ExecFile\fMask = #Null
  8.   ExecFile\hwnd = GetDesktopWindow_()
  9.   ExecFile\lpVerb = @"runas"
  10.   ExecFile\lpFile = @Exe
  11.   ExecFile\lpParameters = @Parameters
  12.   ExecFile\lpDirectory = #Null
  13.   ExecFile\nShow = #SW_NORMAL
  14.   ExecFile\hInstApp = #Null
  15.   ProcedureReturn ShellExecuteEx_(ExecFile)
  16. EndProcedure


язык конечно будет вам незнаком, но подчерк думаю понятен - вин апи. подскажите что тут необходимо подправить, чтобы помимо прав еще был флаг совместимости с XPSP3.

пытался выставлять совместимость путем правки реестра из своей программы. записывает, однако значек безопасности на том файле не появляется. даже после перезагрузки. при проверке свойств - там помечен и запуск от администратора и совместимость, однако значка нет и все равно продолжает запускаться как обычный файл без прав. если зайти и еще раз тыкнуть мышкой уже тыкнутые права - тогда появляется и значек и сам запуск с предупреждением как полагается.



Ранг: 29.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 12 июня 2012 22:27 · Поправил: SeregaZ
· Личное сообщение · #8

и еще момент! если компилировать проект с галкой "требовать админские права", то моя программа делает все что в ней предусмотрено. добавляет себя в автозагрузку, проверяет параметры из реестра - НО! записывается то в автозапуск нормально, а вот не запускается. то есть должен быть диалог, с затемнением экрана, что требуются права - а поскольку система грузится - видимо поэтому его нет, и сама программа из-за этого не запускается.

если убрать галку "требовать админские права", то тогда сама программа может прочитать\вписать в свою ветку что-то, а вот в ветку автозагрузки убрать свою запись или наоборот внести - уже не может. но зато в этом случае программа запускается из автозагрузки нормально при старте винды.

прочитал возможное решение добавить запуск программы в планировщик заданий с пометкой всех прав. в этом случае при помеченой галке "требовать админские права" и правиле запускаться при каждой загрузке виндовса - все замечательно. программа в автозагрузке, и может удалить\установить какие-то параметры в критических ветках, куда нет доступа без прав. однако! возникают две проблемы:
1. планировщик может быть выключен у клиента
2. при установке моей программы нужен будет программный механизм добавления себя в планировщик при установке программы на компьютер.
есть ли какие-то winapi или какие консольные команды для создания и регистрации в планировщике?

в голове крутится еще один вариант: пересмотреть все функции, требующие админских прав и при попытке, например, убрать\поставить галку на автозагрузку в настройках программы - выводить сообщение, что "для изменения этой опции требуется перезапуск программы с администраторскими правами. хотите перезапустить?" и в зависимости от ответа производила бы запуск самой себя по той процедуре. половинчатое решение... и требует дополнительных заморочек клиенту. не удобно немного...



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 12 июня 2012 23:23 · Поправил: ELF_7719116
· Личное сообщение · #9

SeregaZ
"Слышу звон, но не знаю где он". Во-первых, чтобы сформулировать вопрос, необязательно писать целое сочинение. Из всего что Вы написали - сложно понять суть, особенно с фразами типа "если зайти и еще раз тыкнуть мышкой уже тыкнутые права"
Во-вторых, уж не вирус хотите написать?
В-третьих, есть опция "правка" сообщения-Вам она бы сейчас пригодилась, т.е. надо стараться умещать свои мысли в один пост.



Ранг: 29.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 13 июня 2012 10:30
· Личное сообщение · #10

ога. вирус. с инсталлятором и окном, где требуется подтверждение запуска трояна с админскими правами и совместимостью с XPSP3.

после правки реестра, в свойствах искомого ехе файла, указаны галки совместимости и требования прав администратора при запуске, но на иконке файла не появляется значок безопасности и программа запускается без прав. то есть как бы визуально права установлены - фактически же нет. поэтому правка реестра отпадает, либо может там еще где-то что-то подправить надо...

ладно запуск в правами я решил используя ту функцию. что необходимо подправить в ней, чтобы помимо прав администратора еще была выбрана совместимость XPSP3?



Ранг: 29.3 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 21 июня 2012 10:36
· Личное сообщение · #11

так... ну все оказалось сам дурак в реестре две ветки, где записаны пути до файлов и их параметры при запуске: одна что глобальные параметры для всех пользователей, а вторая ветка только для текущего пользователя. я правил те глобальные и удивлялся, почему значек безопасности не появляется. надо было править или оба, или только для текущего - тогда появляется и программа требует подтверждение при запуске

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
глобальные права администратора и совместимости

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
юзерские права администратора и совместимости


 eXeL@B —› Вопросы новичков —› Режим совместимости
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати