Как создать надстройку Office COM, которая может быть развернута без прав администратора - PullRequest
0 голосов
/ 05 декабря 2018

Я ищу подход для разработки надстройки MS Office (Excel, Word, PowerPoint и т. Д.).Надстройка должна быть написана на C # или C / C ++ и развернута, в которой конечные пользователи могут устанавливать ее без прав администратора.

Есть несколько рабочих примеров, таких как Think-cell и Eikon .Но я не знаю, как они это заархивировали.

После некоторых исследований мне известны следующие способы создания надстройки, но ни один из них не соответствует требованию.

1.Использовать инструменты Visual Studio для Office (VSTO)

Кажется, что для установки плагина VSTO не требуются права администратора, но для установки требуется среда выполнения VSTO, а для установщика среды выполнения требуются права администратора.

2.Внедрите интерфейс IDTExensibility2

. В этом случае DLL может быть размещена где-то вроде C:\Users\myuser\AppData\ без прав администратора, но в конечном итоге DLL должна быть

  1. , зарегистрированной под HKEY_CLASSES_ROOT какнормальный COM, и
  2. зарегистрирован под HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\(PowerPoint|Excel|Word|Outlook|etc.)\Addins.

Здесь проблема заключается в первой регистрации требует прав администратора.

Итак, этоСуществуют ли другие способы разработки офисного надстройки, для которой не требуются права администратора при установке, например Think-Cell и Eikon?

Примечание. Я согласен с использованием .NET, поскольку в последних версиях Windows 8/10Предварительно установленная среда .NET.Но, похоже, что .NET не требуется, как это видно в Think-cell и Eikon, для создания надстройки, которая не требует прав администратора при установке.

1 Ответ

0 голосов
/ 09 марта 2019

Это хороший вопрос, на который мне нужно было ответить самому.Моим решением был небольшой пакетный скрипт, который копирует файлы в каталог, доступный для пользователя (в каталоге% appdata%), а затем помещает всю информацию в реестр.Обратите внимание: с помощью команды reg вы можете записывать в реестр без прав администратора (если только это в HKCU).Чтобы указать правильный путь в разделе реестра, он находит целевой каталог и помещает его в файл реестра вместо заполнителя.

Итак, позвольте мне дать вам код, который я использовал для своего программного обеспечения SlideFab каксвоего рода установщик резервных копий, если нет прав администратора.Этот скрипт может не быть красивым и не обрабатывать ошибки, но он работает.

@echo off
echo ___________________________________________________________
echo Welcome to the SlideFab installer batch
echo ___________________________________________________________
echo This batch will install SlideFab 2 for the active user only
echo No system files will be touched
echo ___________________________________________________________
echo IMPORTANT: Do not run this install batch from the zip file
echo            directly. It won't work. Please extract the zip 
echo            file contents to a folder and run it from there.
echo   
echo For further information visit https://SlideFab.com
echo ___________________________________________________________
:Ask
echo Would you like install SlideFab 2?(Y/N)
set INPUT=
set /P INPUT=Type input: %=%
If /I "%INPUT%"=="y" goto yes 
If /I "%INPUT%"=="n" goto no 
goto Ask
:yes
set "sourcepath=%cd%"
set installfolder="SlideFab 2"
set installpath="%appdata%\SlideFab 2"

cd %appdata%
rmdir /S /Q %installfolder%
mkdir %installfolder%

cd %sourcepath%

robocopy "SlideFab 2" %installpath% /E

powershell "(Get-Content SlideFab.reg) | foreach-object {($_ -replace \"FOLDER_APP_DATA\", (\"%appdata%\").replace(\"\\\",\"\\\\\"))} | foreach-object {($_ -replace \"FILEPATH_APP_DATA\", (\"%appdata%\").replace(\"\\\",\"/\"))} | Set-Content SlideFabLocalized.reg"


reg import SlideFabLocalized.reg

del SlideFabLocalized.reg

echo SlideFab 2 was installed
pause
exit
:no
echo SlideFab 2 was not installed
pause

И запись в реестре выглядит так:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\PowerPoint\Addins\HuehnSolutions.SlideFab2]
"FriendlyName"="SlideFab2"
"Description"="SlideFab. The most powerful Powerpoint automation tool ever built"
"Manifest"="FOLDER_APP_DATA\\SlideFab 2\\SlideFab2.vsto|vstolocal"
"LoadBehavior"=dword:00000003


[HKEY_CURRENT_USER\Software\Microsoft\VSTO\Security\Inclusion\a6cf3786-79d9-47b1-a547-d4f03100b58d]
"Url"="file:///FILEPATH_APP_DATA/SlideFab 2/SlideFab2.vsto"
"PublicKey"="<RSAKeyValue><Modulus>seBB06Hh+Io1QcLLu2OVLl761vIeB4PDMAKlHDRlS9TVD0RZU4tBZ4ty22npfRhvt1Uqm5b8At7GZpQrLuMtX1AAvjmoy9qlm7NsX95UCFBP8ip//YvupVmcVpg7okAzuKALBu3anJGC1aa+Q57h6IP3cDnfdswoCvC1e9KJKpSmzktXG29MQ3nQBLn7Oo3UUM4C9Om8h/96cjowiI8FdHuz6JXIj8K8OEEhtCWxGnIL2ebYvnrPxBRFIlBHkuDeGHZ2C0hJB4MWN6MkTQEkJp5YtfJrt1oDmYPvlVjzp3gcUHcLft2/1gLnOVJFMDrwBM93YZNetQAuwzQdgxesHQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"
...