Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: 2007 акс - снижение уровня безопасности
 
 автор: ЕленаПетрова   (16.10.2011 в 01:06)   личное сообщение
 
 

Подскажите, кто смог решить проблему снижения уровня безопасности, если на комп ставить сразу бесплатный 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


  Ответить  
 
 автор: АлексейЕ   (17.10.2011 в 09:22)   личное сообщение
 
 

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 

  Ответить  
 
 автор: ЕленаПетрова   (18.10.2011 в 14:46)   личное сообщение
 
 

Спасибо..только не совсем то, что мне было нужно .Выдимо в урезанном куске - никак..Приходится ставить акс полный ..сносить ..и потом устанавливать рун

  Ответить  
 
 автор: АлексейЕ   (18.10.2011 в 15:57)   личное сообщение
 
 

RunTime, как мне помнится, действительно не создает такой ключ в реестре при установке, но метод "RegWrite", если нет ключа, должен создать его.
У меня подобный код работает без проблем.

В Вашем коде вроде как все нормально, и он должен создаваться.

Может проблема с правами в учетной политике?

  Ответить  
 
 автор: ЕленаПетрова   (19.10.2011 в 15:58)   личное сообщение
 
 

Нет....Никах ограничений по доступу для пользователей на компе нет.

  Ответить  
 
 автор: АлексейЕ   (20.10.2011 в 14:39)   личное сообщение
 
 

Заглянул в свой загрузчик на 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

Давно его писал, но вроде как припоминаю, что столкнулся с Вашей ситуацией и при создании параметра и одновременной записи в него код вылетал с ошибкой. На всех ли ОС такое или нет не разбирался. Просто обрабатываю ошибку и создаю сначала параметр, а потом пишу в него.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList