Здравствуйте, TB, Вы писали:
TB>Здравствуйте, .Mistery, Вы писали:
M>>Здравствуйте, <Аноним>, Вы писали:
А>>>Под каким эккаунтом работает сервис ?
M>>Странный вопрос
на то он и сервис, что бы уметь работать без залогиненного юзера!
TB>Как и все "Local system". Если запустить админом то все как часы работает.
LocalSystem не имеет своей ветки в HKEY_USERS. А при обращении к реджистри текущего пользователя или использовании функций, которым нужна эта ветка запросы идут к HKEY_USERS\.Default. Подробнее об этом —
http://www.microsoft.com/msj/0398/service2.aspx. Там же описано несколько способов, как с этим бороться. А CryptoAPI AFAIK в реджистри лазит. А там (у меня, по крайней мере) никакого упоминания о криптографии нет, в отличие от HKEY_CURRENT_USER. Ы?
При попытке из сервиса импортировать из файла 3DES ключик выдает ошибку NTE_BAD_KEY.
Если собрать как консольное приложение все работает.
Может кто знает в чем фишка.
if(!CryptAcquireContext(&hProv,"_hprvkey1",MS_ENHANCED_PROV,PROV_RSA_FULL,0 /*CRYPT_MACHINE_KEYSET*/) && !CryptAcquireContext(&hProv,"_hprvkey1",MS_ENHANCED_PROV,PROV_RSA_FULL,CRYPT_NEWKEYSET /*| CRYPT_MACHINE_KEYSET*/))
{
ResCode = -1;
}
// Open key from file
;
RSAPubKey1024 PubKey;
dwLen=sizeof(RSAPubKey1024);
CFile dskFile;
if(!dskFile.Open(KeyFileName.c_str(),CFile::modeRead))
{
ResCode = -10034;
goto Ennd;
}
// Read
if(dskFile.Read(&PubKey,dwLen) != dwLen)
{
ResCode = -101;
goto Ennd;
}
}
dskFile.Close();
// Import key
else
if(!CryptImportKey(hProv,(unsigned char *) &PubKey,dwLen,0,0 ,&wrkKey))
{
DWORD Err = GetLastError();
ResCode = -102;
goto Ennd;
}
// Create HASH
if(!CryptCreateHash(hProv,CALG_MD5,0,0,&hHash))
{
ResCode = -103;
goto Ennd;
}
// Read 3DES key from file
if (Data->Read(&EncryptedPartHeader, sizeof(EncryptedPartHeader)) != sizeof(EncryptedPartHeader))
{
ResCode = -104;
goto Ennd;
}
// Import 3DES key
if(!CryptImportKey(hProv,(BYTE *)&EncryptedPartHeader.kb,EncryptedPartHeader.KeyLen/*sizeof(RSA1024KeyExchBLOB)*/,wrkKey,0,&h3DESKey))
{
//NTE_BAD_DATA
DWORD Err = GetLastError();
ResCode = -105;
goto Ennd;
}
Здравствуйте, Аноним, Вы писали:
А>При попытке из сервиса импортировать из файла 3DES ключик выдает ошибку NTE_BAD_KEY.
А>Если собрать как консольное приложение все работает.
А>Может кто знает в чем фишка.
Под каким эккаунтом работает сервис ?
Здравствуйте, <Аноним>, Вы писали:
А>Под каким эккаунтом работает сервис ?
Странный вопрос

на то он и сервис, что бы уметь работать без залогиненного юзера!

... << RSDN@Home 1.1.3 beta 1 >>
Здравствуйте, .Mistery, Вы писали:
M>Здравствуйте, <Аноним>, Вы писали:
А>>Под каким эккаунтом работает сервис ?
M>Странный вопрос
на то он и сервис, что бы уметь работать без залогиненного юзера!
Как и все "Local system". Если запустить админом то все как часы работает.
Пробовал юзать флаг CRYPT_MACHINE_KEYSET — те же яица вид сбоку.
Здравствуйте, .Mistery, Вы писали:
M>Странный вопрос
на то он и сервис, что бы уметь работать без залогиненного юзера!
Странный ответ. Эккаунт на то и эккаунт, кое-что запрещать одним и разрешать другим