2009-07-15 3 views
2

Excel 스프레드 시트는 Project 구조에 프로그래밍 방식으로 액세스해야합니다. 그러나이 액세스는 기본적으로 사용되지 않습니다. 이 조각으로 레지스트리에 기록하여 프로그래밍 방식으로 활성화 할 수 있습니다보안 기능을 사용할지 여부

이 완료 (리셋) 할 수 있지만
Set wsh = CreateObject("WScript.Shell") 
'key to modify' 
str1 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & Application.Version & "\Word\Security\AccessVBOM" 
'enable access' 
wsh.RegWrite str1, 1, "REG_DWORD" 
'read the vba project name' 
MsgBox Application.NormalTemplate.VBProject.Name 
'disable access' 
wsh.RegDelete str1 

프로그래밍, 이것은 보안 문제를 만들 수 있습니다.

내 프로젝트에서는 Project 구조를 수정하려고 시도하고 오류가 발생하지 않으면 오류를 던집니다. 오류를 포착 할 수 있으며이 시점에서 스 니펫을 실행하여 액세스를 활성화하거나 오류 메시지를 표시하여 사용자가 수동으로 액세스 할 수있게 할 수 있습니다. 프로그램을 통해 액세스를 활성화하는 것이 더 좋습니까? 나중에 프로그램을 비활성화하거나 사용자에게 그렇게하도록 지시 할 수 있습니까?

답변

1

두 가지 : 레지스트리를 통해 사무실 보안 설정을 수정할 수 있다는 것은 꽤 잘 알려져 있습니다. 따라서 Office는 파일을 열 때 설정을 읽는 것만으로이 작업을 우회합니다. 따라서 코드로 설정을 변경하는 경우 설정을 적용하려면 파일을 닫았다가 다시 열어야합니다. 두 번째로 사용자 보안 설정을 함부로 변경하면 "무례한"소프트웨어로 간주됩니다. 사용자가 코드를 허용하려면 원하는대로 지정하십시오. 설정을 활성화하고 프로그램을 다시 시작하기 만하면됩니다. 과거의 모든 것은 가난한 행동으로 간주됩니다.
당신이 할 수 있기 때문에, 당신이해야한다는 것을 의미하지는 않는다는 것을 기억하십시오 :)

+0

나는이 질문을 베스트 프랙티스 태그와 함께 게시했습니다. 무례한 "소프트웨어. 시작시 설정을 읽는 Office에 대한 귀하의 언급은이 문제를 해결할 수 있습니다 - 파일 열기 또는 응용 프로그램을 열 때 레지스트리를 확인합니까? –

2

프로그래밍 방식으로 수행 할 수 있다는 사실은 보안 문제입니다. 기본 "보호"를 덮어 쓸 수있는 간단한 메커니즘의 존재를 감안할 때, 사용자는이 기능을 해제하여 사용자에게보다 큰 위험을 노출하지 않습니다. 어쨌든 소금을 쓸만한 바이러스 제작자라면 누구나 할 수 있습니다.

즉, 작업을 수행하고 다시 켜는 동안 20 초 동안 전원을 끄면 사용자에게 전원을 끄라는 요청보다 훨씬 짧은 시간 동안 (깨진) 창을 열어 둡니다.

사용자에게 일시적으로 사용 중지 할 수있는 권한을 요청한 다음 다시 사용하도록 설정했는지 확인해야합니다 (사용하지 않으려면 사용하지 않을 것이므로).

+0

+1을 끄기 전에 사용자에게 묻는 것을 제안합니다. –

관련 문제