您的位置:首页 > 其它

解决安装驱动时提示的“未签名的驱动程序”警告信息!!

2004-07-01 08:34 761 查看
最近编写驱动,并作了个安装程序。但是发现在安装时总是有“未数字签名的驱动”这个警告。只有手动将 系统—〉硬件-〉签署设备驱动程序 中的文件签名验证改为“忽略”,就不会出现这个提示框。可是不知道在注册表中哪个位置,在网上搜集了一些资料,最后在“驱动开发网”找到了相关的文章,就是修改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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐