2009-07-15 2 views
2

Eine Excel-Tabelle benötigt einen programmatischen Zugriff auf ihre Struktur Project. Dieser Zugriff ist jedoch standardmäßig deaktiviert. Es kann programmatisch aktiviert werden, indem man mit diesem Code-Schnipsel in die Registrierung zu schreiben:Gibt an, ob eine Sicherheitsfunktion aktiviert werden soll

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 

Obwohl es (und Reset) programmatisch durchgeführt werden kann, das ein Sicherheitsproblem schaffen könnte.

In meinem Projekt versucht es, die Struktur Project zu ändern, und löst einen Fehler aus, wenn es nicht möglich ist. Der Fehler kann abgefangen werden und an diesem Punkt kann er entweder das Snippet ausführen, um den Zugriff zu ermöglichen, oder dem Benutzer eine Fehlermeldung anzeigen, um den Zugriff manuell zu aktivieren. Ist es besser, den Zugriff über das Programm zu aktivieren, wo es später deaktiviert werden kann, oder den Benutzer dazu anzuleiten?

Antwort

1

Nun, zwei Dinge: Es ist ziemlich bekannt, dass Sie Office-Sicherheitseinstellungen über die Registrierung ändern können. Office wird dadurch umgangen, indem nur die Einstellungen beim Öffnen der Datei gelesen werden. Wenn Sie also die Einstellungen mit Ihrem Code ändern, müssen Sie auch die Datei schließen und erneut öffnen, damit die Einstellung wirksam wird. Zweitens würde die Manipulation der Sicherheitseinstellungen des Benutzers als "unhöfliche" Software betrachtet werden. Wenn der Benutzer Ihren Code zulassen möchte, wird er dies tun. Sie werden aufgefordert, die Einstellung zu aktivieren und das Programm neu zu starten. Alles, was dahinter lag, würde als schlechtes Benehmen gelten.
Denken Sie daran, nur weil Sie können, bedeutet nicht, dass Sie sollten :)

+0

Ich schrieb diese Frage mit dem Best-Practices-Tag wegen der Bedenken über das Schreiben " unhöfliche "Software. Ihre Erwähnung von Office, das nur die Einstellung beim Start liest, könnte dies widerlegen - überprüft es die Registrierung in der geöffneten Datei oder in der offenen App? –

2

Es scheint mir, dass die Tatsache, dass es programmgesteuert erfolgen kann ist ein Sicherheitsproblem. Angesichts der Existenz eines so einfachen Mechanismus zum Überschreiben des standardmäßigen "Schutzes" setzen Sie den Benutzer keinem wesentlich größeren Risiko aus, indem Sie ihn deaktivieren. Jeder Virusschreiber, der es wert ist, würde dies trotzdem tun.

Das heißt, wenn Sie es 20 Sekunden lang ausschalten, während Sie Ihre Arbeit machen und es dann wieder einschalten, bleibt das (unterbrochene) Fenster viel länger geöffnet, als wenn der Benutzer aufgefordert wird, es auszuschalten.

Ich würde geneigt sein, den Benutzer um die Erlaubnis bitten, es vorübergehend auszuschalten, und dann verdammt sicher, dass ich es wieder angeschaltet habe (seit dem Verlassen wäre es ein No-No).

+0

+1 für den Vorschlag, den Benutzer vor dem Ausschalten zu fragen –

Verwandte Themen