Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Наборы обновлений для Windows XP/2003/Windows 7 » Система - [утилита] Установка неподписанных драйверов

Ответить
Настройки темы
Система - [утилита] Установка неподписанных драйверов

Аватара для simplix

Silent


Moderator


Сообщения: 1940
Благодарности: 1188

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: rar PrivateHash.rar
(1.6 Kb, 859 просмотров)
Нашёл исходник утилиты, которая позволяет корректно вычислять PrivateHash для выбора параметра "Пропускать", при установке драйвера без цифровой подписи.

читать дальше »
Код: Выделить весь код
#include <windows.h>
#include <wincrypt.h>
#include <stdio.h>

#define HP_HASHVALUE HP_HASHVAL

/* This program turns the Driver signing Policy On/Off for Windows XP */
 * Written by Stefan `Sec` Zehl <sec@xxxxxx>, 15.11.2004
 *
 * Thanks to sysinternals.com for regmon and apispy
 *        to msdn.microsoft.com for windows reference
 *        to cygwin for their environment
 */

void MyHandleError(char *s){
	printf("Error: %s, number %x\n.",s,(unsigned int)GetLastError());
	exit(1);
}
//--------------------------------------------------------------------
int main(void){
	HCRYPTPROV hCryptProv;
	HCRYPTHASH hHash;
	BYTE data[16];
	DWORD len;
	DWORD seed;
	HKEY hkey;
	BYTE onoff=0; // This is the On/Off toggle
	char input[4];
	int x;

	// HKLM\System\WPA\PnP\seed
	if(RegOpenKeyEx(
			HKEY_LOCAL_MACHINE,
			"System\\WPA\\PnP",
			0,
			KEY_READ,
			&hkey
			)==ERROR_SUCCESS){
		printf("RegOpenKey sucess\n");
	}else{
		printf("RegOpenKey failure\n");
	};

	len=sizeof(seed);
	if(RegQueryValueEx(
			hkey,
			"seed",
			NULL,
			NULL,
			(BYTE*)&seed,
			&len
			)==ERROR_SUCCESS){
		printf("RegQueryValue sucess\n");
	}else{
		printf("RegQueryValue failure\n");
	};

	if(hkey)
		RegCloseKey(hkey);

	printf("Seed=%x\n",(unsigned int)seed);

	printf("Hello, World\n");
	if(CryptAcquireContext(
				&hCryptProv, 
				NULL, 
				NULL, 
				PROV_RSA_FULL, 
				0)) 
	{
		printf("CryptAcquireContext complete. \n");
	} else {
		MyHandleError("Acquisition of context failed.");
	}
	//--------------------------------------------------------------------
	// Create a hash object.

	if(CryptCreateHash(
				hCryptProv, 
				CALG_MD5, 
				0, 
				0, 
				&hHash)) 
	{
		printf("An empty hash object has been created. \n");
	} else {
		MyHandleError("Error during CryptBeginHash!\n");
	}
	//--------------------------------------------------------------------
	// Compute the cryptographic hash on the data.

	input[0]=0;
	input[1]=onoff; // This is the Value!
	input[2]=0;
	input[3]=0;

	if(CryptHashData(
			hHash,
			input,
			sizeof(input),
			0))
	{
		printf("The data has been hashed. \n");
	} else {
		MyHandleError("Error during CPHashData!\n");
	}
	//--------------------------------------------------------------------

	if(CryptHashData(
			hHash,
			(BYTE*)&seed,
			sizeof(seed),
			0))
	{
		printf("The data has been hashed. \n");
	} else {
		MyHandleError("Error during CPHashData!\n");
	}
	//--------------------------------------------------------------------
	len=sizeof(data);
	if( CryptGetHashParam(
			hHash,
			HP_HASHVALUE,
			data,
			&len,
			0))
	{
		printf("The hash has been retrieved. \n");
	} else {
		MyHandleError("Error during CPGetHashParam!\n");
	}

	//--------------------------------------------------------------------
	// Clean up.

	// Destroy the hash object.

	if(hHash) {
		if(!(CryptDestroyHash(hHash)))
			MyHandleError("Error during CryptDestroyHash");
	}

	// Release the CSP.

	if(hCryptProv) {
		if(!(CryptReleaseContext(hCryptProv,0)))
			MyHandleError("Error during CryptReleaseContext");
	}

	printf("Hash: ");
	for(x=0;x<sizeof(data);x++){
		printf("%x ",data[x]);
	};
	printf("\nCreate md5 hash completed without error. \n");

	//--------------------------------------------------------------------
	// HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\PrivateHash
	if(RegOpenKeyEx(
			HKEY_LOCAL_MACHINE,
			"Software\\Microsoft\\Windows\\CurrentVersion\\Setup",
			0,
			KEY_WRITE,
			&hkey
			)==ERROR_SUCCESS){
		printf("RegOpenKey sucess\n");
	}else{
		printf("RegOpenKey failure\n");
	};

	len=sizeof(seed);
	if(RegSetValueEx(
			hkey,
			"PrivateHash",
			0,
			REG_BINARY,
			data,
			sizeof(data)
			)==ERROR_SUCCESS){
		printf("RegSetValueEx sucess\n");
	}else{
		printf("RegSetValueEx failure\n");
	};

	if(hkey)
		RegCloseKey(hkey);
	//--------------------------------------------------------------------
	// HKLM\Software\Microsoft\Driver Signing\Policy
	if(RegOpenKeyEx(
			HKEY_CURRENT_USER,
			"Software\\Microsoft\\Driver Signing",
			0,
			KEY_WRITE,
			&hkey
			)==ERROR_SUCCESS){
		printf("RegOpenKey sucess\n");
	}else{
		printf("RegOpenKey failure\n");
	};

	len=sizeof(seed);
	if(RegSetValueEx(
			hkey,
			"Policy",
			0,
			REG_BINARY,
			&onoff,
			1
			)==ERROR_SUCCESS){
		printf("RegSetValueEx sucess\n");
	}else{
		printf("RegSetValueEx failure\n");
	};
	if(hkey)
		RegCloseKey(hkey);

	//--------------------------------------------------------------------
	// HKLM\Software\Microsoft\Driver Signing\Policy
	if(RegOpenKeyEx(
			HKEY_LOCAL_MACHINE,
			"Software\\Microsoft\\Driver Signing",
			0,
			KEY_WRITE,
			&hkey
			)==ERROR_SUCCESS){
		printf("RegOpenKey sucess\n");
	}else{
		printf("RegOpenKey failure\n");
	};

	len=sizeof(seed);
	if(RegSetValueEx(
			hkey,
			"Policy",
			0,
			REG_BINARY,
			&onoff,
			1
			)==ERROR_SUCCESS){
		printf("RegSetValueEx sucess\n");
	}else{
		printf("RegSetValueEx failure\n");
	};
	if(hkey)
		RegCloseKey(hkey);

	exit(0);
}

Во вложении - скомпилированная утилита, которая корректно устанавливает нужный параметр (проверено на XP и 2003). Пригодится всем, кто имеет дело с установкой драйверов - утилиту достаточно запустить перед установкой неподписанного драйвера и он установится молча, т. к. выбор политики сработает мгновенно.

-------
Полезные разработки


Отправлено: 10:35, 19-06-2008

 

Аватара для Berline

Старожил


Автор проектов


Сообщения: 401
Благодарности: 57

Профиль | Отправить PM | Цитировать


Вопрос: можно ли как нибуть орагнизовать запуск утилитки "после 1й автозагрузки"? К примеру из RunOnceEx поставили всё что нам нужно, он перегрузился, и типа при первом "чистом" логоне запустилась прога, и в этот сеанс мы ставим дровишки...

-------
Ни что так не стимулирует повысить стабильность системы как приближающийся отпуск...


Отправлено: 14:09, 19-06-2008 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для simplix

Silent


Moderator


Сообщения: 1940
Благодарности: 1188

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: rar [addon] PrivateHash.rar
(2.0 Kb, 274 просмотров)

Можно элементарно сделать аддон, который запустит программку на T13 и после этого можно ставить свои драйвера.

-------
Полезные разработки

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:29, 19-06-2008 | #3


Аватара для Berline

Старожил


Автор проектов


Сообщения: 401
Благодарности: 57

Профиль | Отправить PM | Цитировать


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

-------
Ни что так не стимулирует повысить стабильность системы как приближающийся отпуск...


Отправлено: 14:45, 19-06-2008 | #4


Аватара для yurfed

Ветеран


Сообщения: 18499
Благодарности: 2849

Профиль | Отправить PM | Цитировать


Цитата simplix:
Установка неподписанных драйверов »
А чем не нравится средство диагностики "dxdiag", при запуске ответить нет и убрать птичку на отмеченом красным? Зачем огород городить?

-------
Мнение большинства людей всегда ошибочно, ибо большинство людей - идиоты.
~ Эдгар Аллан По ~


Отправлено: 14:50, 19-06-2008 | #5


Аватара для Berline

Старожил


Автор проектов


Сообщения: 401
Благодарности: 57

Профиль | Отправить PM | Цитировать


yurfed, dxdiag - лишние телодвижения... PrivateHash - ни консольных окон, ни диалогов не понятных! Имхо...

-------
Ни что так не стимулирует повысить стабильность системы как приближающийся отпуск...


Отправлено: 15:07, 19-06-2008 | #6


Аватара для simplix

Silent


Moderator


Сообщения: 1940
Благодарности: 1188

Профиль | Сайт | Отправить PM | Цитировать


Цитата Berline:
достаточно однократного запуска программы »
Да.

yurfed, Вас не туда занесло, параметр находится здесь:
Свойства системы => Оборудование => Подписывание драйверов

-------
Полезные разработки


Последний раз редактировалось simplix, 19-06-2008 в 15:35.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:24, 19-06-2008 | #7


Аватара для yurfed

Ветеран


Сообщения: 18499
Благодарности: 2849

Профиль | Отправить PM | Цитировать


simplix, ну да, немного не туда нажал, но и то, что сказал, тоже, снимает проверку.
Цитата Berline:
PrivateHash - ни консольных окон, ни диалогов не понятных! Имхо... »
Про какие консольные окна речь?

-------
Мнение большинства людей всегда ошибочно, ибо большинство людей - идиоты.
~ Эдгар Аллан По ~


Отправлено: 15:36, 19-06-2008 | #8


Аватара для Berline

Старожил


Автор проектов


Сообщения: 401
Благодарности: 57

Профиль | Отправить PM | Цитировать


yurfed, сие было приведено в пример образно...

-------
Ни что так не стимулирует повысить стабильность системы как приближающийся отпуск...


Отправлено: 15:41, 19-06-2008 | #9


Аватара для simplix

Silent


Moderator


Сообщения: 1940
Благодарности: 1188

Профиль | Сайт | Отправить PM | Цитировать


Цитата yurfed:
но и то, что сказал, тоже, снимает проверку »
Это вообще из другой песни и к теме не имеет отношения...

Речь о том, что документированно нельзя управлять этим чекбоксом программно. То есть уже можно...

-------
Полезные разработки

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:42, 19-06-2008 | #10



Компьютерный форум OSzone.net » Автоматическая установка Windows » Наборы обновлений для Windows XP/2003/Windows 7 » Система - [утилита] Установка неподписанных драйверов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - DriverForge - утилита для автоматической установки драйверов mozgabyte Наборы обновлений для Windows XP/2003/Windows 7 6 09-11-2012 19:48
Разное - как отключить проверку неподписанных драйверов в ХР? srokk Microsoft Windows 2000/XP 20 25-02-2010 11:57
Драйвер - Установка драйверов ruv123 Microsoft Windows 2000/XP 2 15-08-2009 20:20
Установка драйверов с CD Demy Автоматическая установка Windows 2000/XP/2003 2 23-02-2007 23:26
Установка драйверов с CD eXtrim Автоматическая установка Windows 2000/XP/2003 1 19-05-2005 13:12




 
Переход