2010-07-07 18 views
7

VBA를 사용하여 Access 응용 프로그램을 개발했습니다. 내가 액세스를 열 때마다, 나는 다음과 같은 얻을 :VBA 보안 경고 제거 방법

https://lh5.googleusercontent.com/wgn5B5PllVXGuG6W4_xiFa1rouSpDSn27MC0nzPkgJ5CPN8BKpAn-gDFsVS4GZtepY-c4jtbEupKeV227ogICQlzcg=s512

내가 옵션 클릭해야합니다 ->내 매크로를 실행하는 내용을 사용합니다. 이 응용 프로그램은 기술에 정통한 사람이 아닌 몇 사람에게 공유됩니다. 따라서 요구 사항에 따라 제거해야합니다. 나는 서명/데이터베이스 패키징을 시도했지만 여전히 경고를 제거하지는 않습니다.

+0

캡쳐 화면의 모습은 Access 2007 및 2003, 또는 2010입니다. – jdw

답변

11

"신뢰할 수있는 위치"에서 Excel이 시작되는 위치를 추가해야합니다.

Excel 옵션에서
  • , 보안 센터로 이동 한 후 위치
  • 위치를 추가 신뢰할 수있는 다음과 같이

    이 작업을 수행하려면 않습니다.

이렇게하면 PC별로 처리해야합니다.

또한 Excel 파일 관점에서 사용자가 VBA 코드를 실행하도록 선택했는지 여부를 완전히 보안하기 때문에이 작업을 수행 할 방법이 없습니다.

또한 약간의 부주의로 Excel 파일에 서명하면 게시자로 신뢰받는 사람이 필요하므로 솔루션이 작동하지 않는 것입니다.

편집 :

의견으로 촬영, 프로그래밍을 할 수있는 방법이 될 것 같지 않습니다. XpertsExchange에서 가져온 것처럼

셸을 호출하지 않고 코드에서 레지스트리 항목을 설정하지 않는 이유는 무엇입니까? cRegistry 클래스는 여기에서 찾을 사용 :

http://www.vbaccelerator.com/home/VB/Code/Libraries/Registry_and_Ini_Files/Complete_Registry_Control/article.asp

VBA 코드 :

가주의해야 할 점은 YourTrustedLocationname은 고유해야한다는 것입니다
Dim c As New cRegistry 
    With c 
     .ClassKey = HKEY_CURRENT_USER 
     .SectionKey = "Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\YourTrustedLocationName" 
     .ValueKey = "Path" 
     .ValueType = REG_DWORD 
     .Value = "Full path to Trusted Folder" 
    End With 

...

당신은 그것을한다면, 시도 할 것을 .ValueType = REG_DWORD 또는 REG_SZ 여야합니다. 나는 그걸 잘 모르겠다.

+0

thankyou. 그것을 "삽입"할 수있는 방법이 있습니까? 신뢰할 수있는 위치를 추가 할 고급 스러움이 없습니다. – masfenix

+1

예 친구. 그렇지 않으면 보안 기능의 목적을 전체적으로 무시 할 수 있습니다. 이 일을 내가 VBA 바이러스를 포장하고 파일을 보내는 것을 상상해보십시오. 파일이 나를 먼저 묻지 않고 매크로를 자동으로 실행하면이 보안 기능이 추가 된 것을 전혀 알 수 없습니다. – Trefex

+0

나는 당신의 요점을, 아주 많이 본다. – masfenix

2

매크로에 신뢰할 수있는 기관이 서명했는지 확인하십시오.

+0

Access 2007에서는 .accdb, .accdr 및 .accde 형식의 데이터베이스 파일에 코드 서명을 허용하지 않습니다. MS는이 기능을 없애 버렸습니다 (그리고 2010 버전에서 다시 가져 왔습니다). Version 2007은 .mdb 형식의 데이터베이스에 코드 서명을 허용합니다. 그렇지 않으면 설치 패키지의 서명 만 허용됩니다. 최종 사용자가 Access 런타임을 사용하고 있고 신뢰할 수있는 위치를 추가하는 데 쉬운 액세스 권한이없는 경우에는 좋지 않습니다. – jdw

3

사용자 별 옵션입니다. 누구나 워크 북을 '신뢰'해야합니다.

Excel에서 메뉴 버튼을 누르고 Excel 옵션을 선택하십시오. 이 창에서 트러스트 센터를 선택한 다음 트러스트 센터 설정을 선택하십시오. 해당 창에서 신뢰할 수있는 위치를 선택합니다.

해당 화면에서 "내 네트워크에서 신뢰할 수있는 위치 허용"을 선택한 다음 위치 추가를 클릭하고 통합 문서의 네트워크 위치를 추가 할 수 있습니다.

0

내가 수행 한 작업은 Visual Studio 2010 (설치 & 배포 프로젝트 아래)으로 설치 프로젝트를 만드는 것입니다.이 프로젝트 내에서 MS Access 응용 프로그램을 "C : \ Ntapps \ MsOffice \ Office12 \ ACCWIZ \"에 설치/복사하도록 구성합니다. 이 폴더는 신뢰할 수있는 데이터베이스의 폴더입니다. 그런 다음 MS Access 응용 프로그램에 대한 바로 가기를 만들어 원하는 위치에 설치하십시오.

모든 것이 정상이고 설치가 완료되면 MS Access (기본 구성)는 이제 데이터베이스를 신뢰합니다.

행운, 그것은 여기에 도움이 될 경우를 대비)

Grtz, 톰

+0

(Access 2007의) 사용자가 언급 한 폴더의 기본 설치 기본 위치는 "% ProgramFiles (x86) % \ Microsoft Office \ Office12 \ ACCWIZ"입니다. 경로는 표준 기본 경로가 아니며 설치에 고유 할 가능성이 큽니다. 이 폴더는 관리 권한이없는 사용자에 대해 쓰기 권한이 없으므로 보안 권한이 있는지 여부를 궁금해 할 수 있습니다. – jdw

5

이 질문은 세가이지만, 내가 한 일이다. 그것은 이미 제안 된 것과는 다른 접근법이며 다른 누군가에게 도움이 될 수 있습니다. 필자의 경우 MsAccess는 사용자가 직접 열 수 없습니다. 대신 MsAccess는 다른 사용자 지정 응용 프로그램에서 자동화를 사용하여 시작되었습니다. 따라서 사용자가 '콘텐츠 사용'을 클릭하는 대신 MsAccess에 매크로를 사용하도록 지정하는이 사용자 지정 응용 프로그램을 만들었습니다.

cli = create_object("Access.Application") 
cli.AutomationSecurity = 1    # 1 = msoAutomationSecurityLow 
cli.visible = true 
cli.opencurrentdatabase("c:/Users/jmperez/AppData/Local/Temp/DB_TMP.mdb") 

(위의 코드에 대한 죄송합니다, 그것은 '표준'또는 '인기'프로그래밍 언어에서 아니지만, Visual Basic 또는 어떤 다른 사람에 적응하기 어려울 안)

이 비슷한
+0

이 코드는 내가 원했던 것입니다. 나는 오랫동안 응용 프로그램 개체를 사용하여 숨겨진 액세스 데이터베이스 파일을 여는 방법을 찾고있었습니다. 'AutomationSecurity' 속성을 1로 설정하는 것은 신뢰할 수있는 위치 경고 대화 상자를 숨기는 열쇠였습니다. –

관련 문제