Я боролся с этим сильно, и этот пост был так близко. Перепробовав ряд других вещей, я знал, что этот пост был близок, и думал, что попробую кое-что.
Для справки: исправление папки «Рабочий стол» в systemprofile исправило эту проблему, когда мы работали с Windows Server 2008 R2 и Excel 2013 Automation. Это стало проблемой только после того, как мы обновились до Windows Server 2012 R2 и Excel 2016. Чтобы исключить виновника Excel, я попробовал на сервере с Windows Server 2012 R2 и Excel 2013 и столкнулся с очень похожими проблемами.
Вся автоматизация отлично работала в Network Service, но в идеале мы хотели запустить наш сайт в ApplicationPoolIdentity.
Перво-наперво, пулу приложений, запущенному с ApplicationPoolIdentity, необходимо загрузить профиль пользователя.
Start Run -> inetmgr
expand Server -> Application Pools
right click on your App Pool -> Advanced Settings
under Process Model -> Load User Profile <-- should be set to true
Так что теперь я должен был выяснить, кто эта личность. Может быть, есть лучший способ сделать это, но поскольку я добавил пользователя в IIS_IUSRS, я нашел эту информацию.
Windows -> Edit local users and groups
Groups -> right click IIS_IUSRS -> Add to Group...
Add...
Locations... (choose local server), click OK
In the Enter the object names to select box type IIS APPPOOL\<app pool name>
(note the space and the triple P)
also, <app pool name> is the name of your Application Pool in inetmgr
Теперь вы должны видеть себя участником IIS_IUSRS IIS APPPOOL \ (SID), где SID - это идентификатор безопасности вашего приложения в Windows. Это будет очень длинная буквенно-цифровая пунктирная строка, например "S-1-5 - ## - ######### - ######### - ######## ## - ######### - ######### "
В отличие от ответов выше, это был пользователь, которого мне нужно было отредактировать в реестре.
Так что теперь, следуя приведенным выше ответам, мне нужно было добавить следующее в реестр. Примечание: Добавление ключей к S-1-5-18 не решило проблему, мне пришлось добавить их в SID ApplicationPoolIdentity, найденного выше.
[HKU]\SID\Software\Microsoft\Windows NT\CurrentVersion\Devices
"Send To OneNote 2010"="winspool,nul:"
"Microsoft XPS Document Writer"="winspool,Ne00:"
[HKU]\SID\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts
"Send To OneNote 2010"="winspool,nul:,15,45"
"Microsoft XPS Document Writer"="winspool,Ne00:,15,45"
[HKU]\SID\Software\Microsoft\Windows NT\CurrentVersion\Windows
"UserSelectedDefault"=dword:00000000
"Device"="Microsoft XPS Document Writer,winspool,Ne00:"
Обратите внимание, как я использовал «правильный» ответ от eletre / Robert. Использование параметра OneNote для устройства не работает для меня.
Надеюсь, это избавит кого-то от необходимости выслеживать это когда-нибудь.