解决安装驱动时提示的“未签名的驱动程序”警告信息!!
最近编写驱动,并作了个安装程序。但是发现在安装时总是有“未数字签名的驱动”这个警告。只有手动将 系统—〉硬件-〉签署设备驱动程序 中的文件签名验证改为“忽略”,就不会出现这个提示框。可是不知道在注册表中哪个位置,在网上搜集了一些资料,最后在“驱动开发网”找到了相关的文章,就是修改HKEY_LOCAL_MACHINE下的Software//Microsoft//Driver Signing和Software//Microsoft//Non-Driver Signing//这连个键下的Policy ,将值改 0 即可!我经过测试,发现在我机器上还是出现了提示!!我想是否是在当前用户的注册表下呢?结果发现在KEY_CURRENT_USER下果然还有一个Software//Microsoft//Driver Signing键!!将值改为 0 后!通过!!!
以下是InstallShield的安装脚本!^_^
//全局变量保存状态值
STRING g_svDriverSigning, g_svNonDriverSigning, g_svUserDriverSigning;
NUMBER g_nvSize, g_nvUserSize, g_nvNonSize;
/*
未签名的驱动程序安装操作
0 默认继续
1 允许安装但发出警告
2 禁止安装
*/
function NonDriverSigning(bEnable)
STRING szKey, svValue, szValue;
STRING szKeyName;
NUMBER nvType,nvSize;
begin
RegDBSetDefaultRoot( HKEY_CURRENT_USER );
//---------------------------------------
//设置HKCU下的未签名的驱动程序安装操作
szKey = "Software////Microsoft////Driver Signing////";
szKeyName = "Policy";
nvType = REGDB_NUMBER;
if ( bEnable ) then
//保存原值
if ( RegDBGetKeyValueEx( szKey, szKeyName, nvType, g_svUserDriverSigning,
g_nvUserSize ) < 0 ) then
g_svUserDriverSigning = "0";
g_nvUserSize = -1;
endif;
//设置为"默认继续"
szValue = "0";
nvSize = -1;
else
//恢复原值
szValue = g_svUserDriverSigning;
nvSize = g_nvUserSize;
endif;
//设置键值
if (RegDBSetKeyValueEx ( szKey , szKeyName , nvType , szValue ,
nvSize ) < 0) then
//return -1;
;
endif;
RegDBSetDefaultRoot( HKEY_LOCAL_MACHINE);
//---------------------------------------
//设置HKLM下的未签名的驱动程序安装操作
szKey = "Software////Microsoft////Driver Signing////";
szKeyName = "Policy";
nvType = REGDB_BINARY;
if ( bEnable ) then
//保存原值
if ( RegDBGetKeyValueEx( szKey, szKeyName, nvType, g_svDriverSigning,
g_nvSize ) < 0 ) then
g_svDriverSigning = "/0/0/0/0";
g_nvSize = 4 ;
endif;
//设置为"默认继续"
szValue = "/0/0/0/0";
nvSize = 4;
else
//恢复原值
szValue = g_svDriverSigning;
nvSize = g_nvSize;
endif;
//设置键值
if (RegDBSetKeyValueEx (szKey, szKeyName, REGDB_BINARY, szValue,
nvSize) < 0) then
return -1;
endif;
//---------------------------------------
//设置HKLM下的未签名的非驱动程序安装操作
szKey = "Software////Microsoft////Non-Driver Signing////";
szKeyName = "Policy";
nvType = REGDB_BINARY;
if ( bEnable ) then
//保存原值
if ( RegDBGetKeyValueEx( szKey, szKeyName, nvType, g_svNonDriverSigning,
g_nvNonSize ) < 0 ) then
g_svNonDriverSigning = "/0/0/0/0";
g_nvNonSize = 4;
endif;
//设置为"默认继续"
szValue = "/0/0/0/0";
nvSize = 4;
else
//恢复原值
szValue = g_svNonDriverSigning;
nvSize = g_nvNonSize;
endif;
//设置键值
if (RegDBSetKeyValueEx (szKey, szKeyName, REGDB_BINARY, szValue,
nvSize) < 0) then
return -1;
endif;
return 0;
end;