powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автозапуск+Иконка в трее+От имени администратора+UAC(Vista/Win7)
3 сообщений из 3, страница 1 из 1
Автозапуск+Иконка в трее+От имени администратора+UAC(Vista/Win7)
    #37764927
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть proga.exe (VB6).
1. Запускается при старте системы
Код: vbnet
1.
2.
3.
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Параметр =proga
Значение=C:\Program Files\Proga\proga.exe


2. Запускается всегда с правами администратора. (В свое время боролся с вистами, так сделал, иначе глюки из-за того что данные по старинке храню в Program Files\Proga\.., а разбираться с папкой User Data лениво)
3. proga.exe имеет значок в трее.

Суть проблемы (на Виста/Win7, UAC включено естественно):
1) Молча не запускается (а хотелось бы). Всегда выводит "А разрешаете ли вы меня запустить...?"
2) На Виста 32-бит перед этим в трей выводит значок "Блокировка автозапуска программ", на Win7 32-бит вообще никак не стартует, на 64-битных запускается четко, но выводит окно.

Попытался вернуться к этому старому вопросу полечить сертификатами и цифровой подписью.
1) Microsoft Code Signing
Ну, издатель в окне уже не "не известный", приятно конечно. Но суть та же.
2) Test Code Signing (тестовый сертификат)
При этом делаю предварительно (можно делать инсталлером):
Код: vbnet
1.
2.
certmgr -add dmitry.cer -s -r localMachine root
certmgr -add dmitry.cer -s -r localMachine trustedpublisher


Добавление в root (с Microsoft Code Signing из-за цепочки доверенных сертификатов такого сделать нельзя) дает большие "привелегии", поэтому тестовый сертификат в нек. случаях (не в случаях с драйверами) даже "лучше" с точки зрения появления всяких предупреждений, посему попробовал.
Издатель в окне опять же не "не известный". Но суть проблемы та же.

Вылечить как-то можно?
...
Рейтинг: 0 / 0
Автозапуск+Иконка в трее+От имени администратора+UAC(Vista/Win7)
    #37764992
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается способ есть:
http://www.techrepublic.com/blog/window-on-windows/make-vista-launch-uac-restricted-programs-at-startup-with-task-scheduler/616
Исследую его на надежность, но пока вполне доволен.
Команда запуска засовывается в планировщик заданий.
Можно программно, инсталлер по любому от админа работает:
Код: vbnet
1.
SCHTASKS /Create /TN taskname /SC ONLOGON /RL HIGHEST /RU пользователи /TR "C:\Program Files (x86)\Proga\Proga.exe /start" /F



/SC ONLOGON -при входе в систему
/RL HIGHEST -наивысший приоритет, UAC игнорируется
/RU пользователи -запускается от имени группы "users", т.е. от имени текущего пользователя

Этот вариант работает для всех пользователей и эквивалентен ключу в RUN в HKLM
UAC запускается только если тек. user не admin и предлагает ввести админа, что логично (у меня требование admin зашито в proga.exe), если тек. user admin, то тихо запускается под ним.

API конечно таких не нашел. Смущает 2 вопроса
1) /RU пользователи
я не нашел универсального параметра, кот. можно сюда подставить, в китае пользователи явно называются иначе.
Как вариант:
http://support.microsoft.com/kb/288900

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
' Helper function to lookup a SID and display the name as a test
'
Public Sub DisplayNameOfSid(ByVal lSid As Long)

   Dim result As Long
   Dim userName As String
   Dim cbUserName As Long
   Dim domainName As String
   Dim cbDomainName As Long
   Dim peUse As Integer
   
   ' Lookup the constructed SID to get the name
   userName = Space(255)
   domainName = Space(255)
   cbUserName = 255
   cbDomainName = 255
   result = LookupAccountSid(vbNullString, lSid, userName, cbUserName, _
         domainName, cbDomainName, peUse)

   If result <> 0 Then
      MsgBox userName
   End If

End Sub


Но не сглючило бы...

2. /TR "C:\Program Files (x86)\Proga\Proga.exe /start"
не понимает гад, где путь, а где параметр
даже если
/TR "C:\Program Files (x86)\Proga\Proga.exe"
считает что C:\Program это екзешник, а Files (x86)\Proga\Proga.exe -это параметр, ну и соотв. задание не запускается (проверяю естественно все что получилось в графич. оболочке планировщика)

Ну, еще кажется нашел баг в "proga.exe". Иконка не всегда в трей попадает таким методом, можно конечно поставить задержку в 5 секунд, но может не помочь если долго грузится. Кажется тема тут обсуждалась: при глюке explorer часть приложений иконки восстанавливает, часть -нет. Мое видимо из тех которые "нет", надо копать.
...
Рейтинг: 0 / 0
Автозапуск+Иконка в трее+От имени администратора+UAC(Vista/Win7)
    #37765017
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий772. /TR "C:\Program Files (x86)\Proga\Proga.exe /start"
не понимает гад, где путь, а где параметр.
Теперь понимает:

Код: vbnet
1.
SCHTASKS /Create /TN taskname /SC ONLOGON /RL HIGHEST /RU пользователи /TR "\"C:\Program Files (x86)\Proga\Proga.exe\" "/start /F



http://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx

Синтаксис явно придуман людьми с больным воображением.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автозапуск+Иконка в трее+От имени администратора+UAC(Vista/Win7)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]