И есть файл start.exe (к примеру), который пользуется этой библиотекой.
Чтобы не уложнять жизнь обычным юзерам моя программа может копироваться с одного ПК на другой без переустановки.
Это реализовывается таким образом, что сразу после запуска start.exe внутри него выполняется такой код:
- Код: Выделить всё
Private Declare Function Reg_Admin Lib "admin.dll" Alias "DllRegisterServer" () As Long
Sub Main()
Call Reg_Admin
...
End Sub
В Windows XP это работает нормально.
Но в Windows 7 отказывается работать. И даже в ручную в Windows 7 при запуске из командной строки
- Код: Выделить всё
regsvr32.exe admin.dll
Помогло такое:
1. В Windows 7 открываю ПУСК -> ВСЕ ПРОГРАММЫ -> СТАНДАРТНЫЕ -> Командная строка -> Нажимаю правую кнопку мыши -> Выбираю запустить от имени Администратора.
2. Набираю из командной строки: regsvr32.exe admin.dll и регистрация проходит отлично.
Вопрос: как теперь это реализовать в коде программы?
P.S.: пользователь в Windows 7 имеет права администратора
P.S.2: пробовал в коде программы перед вызовом Reg_Admin включить разрешение работы с системными процессами с привелегией "SeDebugPrivilege", но это не помогло.
P.S.3: странно, что стандартная библиотека VB5 регистрируется в Windows 7 без всяких дополнительных прав, т.е. команда regsvr32.dll msvbvm50.dll работает без проблем, а команда regsvr32.dll admin.dll не работает.
P.S.4: под Vist-ой ещё не проверял, но подозреваю, что там будет происходить тоже самое.