Независимо от того, чтобы включить функцию защищенной безопасности - PullRequest
2 голосов
/ 15 июля 2009

Электронной таблице 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 и выдает ошибку, если не может. Ошибка может быть перехвачена, и на этом этапе он может либо запустить фрагмент, чтобы разрешить доступ, либо отобразить сообщение об ошибке пользователю, чтобы разрешить доступ вручную. Лучше ли разрешить доступ через программу, где его можно будет позже отключить, либо поручить пользователю сделать это?

Ответы [ 2 ]

2 голосов
/ 15 июля 2009

Мне кажется, что тот факт, что это может быть сделано программно , является проблемой безопасности. Учитывая наличие такого простого механизма для отмены «защиты» по умолчанию, вы не подвергаете пользователя значительно большему риску, отключая его. Любой вирусописатель, достойный своей соли, будет делать это в любом случае.

Тем не менее, отключив его на 20 секунд, пока вы выполняете свою работу, а затем включив его снова, окно (разбитое) остается открытым на гораздо меньшее время, чем при запросе пользователя на его отключение.

Я был бы склонен попросить у пользователя разрешения временно отключить его, а затем, черт побери, убедиться, что я снова включил его (поскольку отключение было бы нет-нет).

1 голос
/ 15 июля 2009

Ну, две вещи: хорошо известно, что вы можете изменять настройки безопасности офиса через реестр. Так что Office обходит это, читая настройки только при открытии файла. Поэтому, если вы измените настройки с помощью своего кода, вам также необходимо закрыть и снова открыть файл, чтобы настройки вступили в силу. Во-вторых, вмешательство в настройки безопасности пользователей будет считаться «грубым» программным обеспечением. Если пользователь хочет разрешить ваш код, он это сделает. Просто попросите их включить настройку и перезапустить программу. Все, что в прошлом было бы плохим поведением.
Помните, только то, что вы можете, не значит, что вы должны:)

...