|
|
|
| Подскажите, кто смог решить проблему снижения уровня безопасности, если на комп ставить сразу бесплатный 2007 или 2010 AccessRuntime.
Когда на комп установлена полная версия акса, то использую вот этот скрипт.
Но при урезанной версии Runtime скрипт не работает.
Option Explicit
On Error Resume Next
Const strSecurityJet = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SandBoxMode"
DIM AccessShell, strPathToAccess, strAccessVersion, strCurrentPath, WshShell, strSecurity
' Определяем версию Access
Set AccessShell = CreateObject("Access.Application")
strAccessVersion = AccessShell.SysCmd(7)
Select Case strAccessVersion
Case "11.0"
strSecurity = "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\security\Level"
Case "12.0"
strSecurity = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\VBAWarnings"
End Select
Set WshShell = CreateObject("WScript.Shell")
' Понижаем безопасность
If WshShell.RegRead(strSecurity) <> 1 Then
WshShell.RegWrite strSecurity, 1, "REG_DWORD"
End If
' Определяем путь к MSACCESS.EXE
strPathToAccess = AccessShell.sysCmd(9) & "MSACCESS.EXE "
strCurrentPath = Replace(WScript.ScriptFullName, WScript.ScriptName,"")
' Запускаем приложение например через функцию GetObject
' Set AccessShell = GetObject( strCurrentPath & "db1.mdb")
' или через WshShell.Exec
Set AccessShell = WshShell.Exec(strPathToAccess & """" & strCurrentPath & "db1.mdb")
' а так запускаем, если база защищена через файл рабочих гупп - mdw
' Set AccessShell = WshShell.Exec(strPathToAccess & """" & strCurrentPath & "db1.mdb" & """" & "/WRKGRP" & """" & strCurrentPath & "\Security.mdw""")
AccessShell.visible = true
WshShell.AppActivate
Set AccessShell = nothing
Set WshShell = Nothing
Err.Clear
|
| |
|
| |
|
|
|
|
Select Case strAccessVersion
Case "11.0" 'Это для 2003 Access
strSecurity = "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\security\Level"
Case "12.0" 'Это для 2007 Access
strSecurity = "HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\VBAWarnings"
Case "14.0" 'Это для 2010 Access
strSecurity = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Security\VBAWarnings"
End Select
|
| |
|
| |
|
|
|
| Спасибо..только не совсем то, что мне было нужно .Выдимо в урезанном куске - никак..Приходится ставить акс полный ..сносить ..и потом устанавливать рун | |
|
| |
|
|
|
| RunTime, как мне помнится, действительно не создает такой ключ в реестре при установке, но метод "RegWrite", если нет ключа, должен создать его.
У меня подобный код работает без проблем.
В Вашем коде вроде как все нормально, и он должен создаваться.
Может проблема с правами в учетной политике? | |
|
| |
|
|
|
| Нет....Никах ограничений по доступу для пользователей на компе нет. | |
|
| |
|
|
|
| Заглянул в свой загрузчик на vbs.
В нем использую такую конструкцию.
On Error Resume Next
. . .
Err.Clear
If WSHShell.RegRead(strSecurityDCWEXCEL2007) <> 0 Then
WSHShell.RegWrite strSecurityDCWEXCEL2007, 0, "REG_DWORD"
End If
If Err.Number <> 0 Then
Err.Clear
WSHShell.RegWrite strSecurityDCWEXCEL2007, ""
WSHShell.RegWrite strSecurityDCWEXCEL2007, 0, "REG_DWORD"
End If
|
Давно его писал, но вроде как припоминаю, что столкнулся с Вашей ситуацией и при создании параметра и одновременной записи в него код вылетал с ошибкой. На всех ли ОС такое или нет не разбирался. Просто обрабатываю ошибку и создаю сначала параметр, а потом пишу в него. | |
|
| |