Доступ к хранилищу личных сертификатов текущего пользователя в службе Windows - PullRequest
2 голосов
/ 17 июня 2010

Я работаю над приложением, которое обращается к сертификату x.509 из текущего хранилища пользователей.Это прекрасно работает, когда приложение запускается как исполняемый файл.

Однако, когда я пытаюсь запустить приложение в качестве службы Windows, оно не может найти сертификат.Я попытался изменить свойство LogOn для консоли windowsservice, чтобы установить правильного пользователя, но это не помогло.

Можно ли каким-либо образом получить доступ к хранилищу сертификатов конкретного пользователя (администратора)?Я обязан использовать сертификат в хранилище пользователей - иначе я могу легко использовать локальное хранилище компьютеров.

Любая помощь будет оценена.

Я использую этот конкретный фрагмент кода для полученияCertificate:

                        serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "My-CertificateName");

Это прекрасно работает при запуске в качестве исполняемого файла - но не удается найти сертификат при запуске в качестве службы Windows

1 Ответ

1 голос
/ 17 июня 2010

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

Тем не менее, попробуйте эти две ссылки для начала - они написаны с точки зрения WCF, но легко применимы к любому типу сервиса:

Работа с сертификатами

Как: сделать сертификаты X.509 доступными для WCF

Если ни одна из этих справок не нужна, отредактируйте свой вопрос, включив в него код, который вы используете для доступа к сертификату x.509.

...