DirectX 9安装出现不能信任一个安装所需的压缩文件。请检查加密服务是不是启用并且Cabinet文件证书是不是有效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DirectX 9安装出现不能信任一个安装所需的压缩文件。请检查加密服务是不是启用并且Cabinet文件证书是不是有效相关的知识,希望对你有一定的参考价值。
应该怎么设置?装迷你忍者时出现的问题.系统是WIN7的
把C:\WINDOWS\system32\DirectX目录下的websetup文件夹删除就可以了,这个文件夹是隐藏的,要在文件夹选项把显示所有文件和文件夹选上 参考技术A 回答您好,您的问题我已经看到了,正在整理答案,请稍等一会,我们是一个一个回答,请耐心等待,打字需要一点时间,很高兴能为您服务
我是XP,遇到过同样的问题,你试试看 C:\\WINDOWS\\system32\\DirectX下一个dx什么的隐藏文件删了再点开始—>运行->cmd->gpedit.msc打开组策略:依次点windows设置,安全设置,本地策略,安全选项更改未签名驱动程序的安装为允许安装但发出警告,即可正常那个文件夹下有个Dinput和一个隐藏的文件夹,因为我的删了,不知道文件名。。。。。。
提问你好
回答希望我们的回答能帮助到您,祝您生活愉快!好人一生平安!谢谢麻烦记得点个赞!
提问没有搜索到DirectX
回答总结有以下的几个原因: 一,你下载的这个软件本身具有问题。重新下载。 二,你如果装过或者装到一半的时候退出,造成损坏 三,杀毒,清理恶意软件和插件程序。
一、请确认你的驱动来源是正确的,否则到正规的渠道下载 二、如果你是因为第二条的原因,重新安装并按第三条解决 三、删除c:\\windows\\system32\\directx\\下的websetup文件 四、在运行里面输入组策略打开(gpedit.msc)打开后找到windows设置--->本地策略--->安全选项. 在里面找到(设备:未签名驱动程序的安装操作)改动里面的设置,最好配置成允许安装但发出警告
提问因为比较简单的方法
???
回答没有了[比心]
提问再点开始—>运行->cmd->gpedit.msc打开组策略
在哪里?
???
回答找开“运行”输入:regsvr32 gpedit.dll wsecedit.dll然后回车确定如果出现以下错误提示:LoadLibrary("gpedit.dll")失败-找不到指定的模块将Framedyn.dll文件从windowssystem32wbem目录下拷贝到windowssystem32目录下,再重新注册一下gpedit.dll就可以打开gpedit.msc了。
不能信任一个安装所需的压缩文件,请检查是否启用了加密服务及cabinet文件证书的有效性。"总结有以下的几个原因: 一,你下载的这个软件本身具有问题。重新下载。 二,你如果装过或者装到一半的时候退出,造成损坏 三,杀毒,清理恶意软件和插件程序。解决办法:一、请确认你的驱动来源是正确的,否则到正规的渠道下载 二、如果你是因为第二条的原因,重新安装并按第三条解决 三、删除c:\\windows\\system32\\directx\\下的websetup文件 四、在运行里面输入组策略打开(gpedit.msc)打开后找到windows设置--->本地策略--->安全选项. 在里面找到(设备:未签名驱动程序的安装操作)改动里面的设置,最好配置成允许安装但发出警告
DirectX 11:运行简单的 DirectX 应用程序时运行时崩溃
【中文标题】DirectX 11:运行简单的 DirectX 应用程序时运行时崩溃【英文标题】:DirectX 11: Runtime crash when running simple DirectX application 【发布时间】:2014-08-29 18:40:46 【问题描述】:我尝试从基类继承一些公共全局变量,并成功启动并运行窗口,并以简单的方式类似地初始化了 Directx - 在它自己的类中,继承全局变量,例如 HWND hWnd
。
但是,当程序运行时,D3D11CreateDeviceAndSwapChain()
失败。进一步检查,调试器给出:
DXGI ERROR: IDXGIFactory::CreateSwapChain: No target window specified in DXGI_SWAP_CHAIN_DESC, and no window associated with owning factory. [ MISCELLANEOUS ERROR #6: ]
DXGI_SWAP_CHAIN_DESC
结构如下:
SwapChainDesc.BufferCount = 1;
SwapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
SwapChainDesc.BufferDesc.Width = 1024;
SwapChainDesc.BufferDesc.Height = 768;
SwapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
SwapChainDesc.OutputWindow = hWnd;
SwapChainDesc.BufferDesc.RefreshRate.Numerator = 60;
SwapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
SwapChainDesc.SampleDesc.Count = 4;
SwapChainDesc.Windowed = TRUE;
SwapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
hWnd
的存储位置:
class Infinity
public:
Infinity();
~Infinity();
HWND hWnd;
;
这样继承:
class Direct3D : public Infinity
public:
Direct3D();
~Direct3D();
IDXGISwapChain *Swapchain; //Display modes.
ID3D11Device *Device;
ID3D11DeviceContext *DeviceContext;
ID3D11RenderTargetView *RenderTargetView;
void D3D_Start(int width, int height);
void D3D_Render();
void D3D_Terminate();
Direct3D;
在运行时检查SwapChainDesc.OutputWindow = hWnd;
的值,它为空。 (0x00000000
) 我认为这就是导致Swapchain->GetBuffer
失败的原因,因为D3D11CreateDeviceAndSwapChain
需要一个有效的HWND
。如果这是真的,为什么ShowWindow()
成功了?
编辑:我还应该补充一点,ShowWindow()
是一个类似的类,继承自class Infinity
:
class Windows : public Infinity
public:
Windows();
~Windows();
bool DisplayWindow(int width, int height, HINSTANCE hInstance);
static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
Windows;
【问题讨论】:
hWnd 在您的代码中不是全局变量,它是一个数据成员。 @NmdMysteryhWnd
不应该在这个类结构中充当全局吗?两个类都继承自Infinity
不,因为它是一个实例变量。所有实例变量都是对象的本地变量。如果您实例化一个 Window 类型的对象,然后实例化另一个 Direct3D 类型的对象,它们将各自拥有自己的 hWnd 实例。您可能想要做的是制作 hWnd static
,这样就只有一个 hWnd 副本,并且所有继承类都可以访问它(当然,如果您只打算制作一个窗口)。
嗯,我试过了,收到了LNK2001
,LNK1120
(Error 1 error LNK2001: unresolved external symbol "public: static struct HWND__ * Infinity::hWnd" (?hWnd@Infinity@@2PAUHWND__@@A) c:\Users\...\Win32Project3.obj Win32Project3
)只有1个窗口-
您还必须在您的 cpp 文件中的类之外声明它,如下所示:HWND Infinity::hWnd = NULL;
。但请注意,从长远来看,我的建议可能不是您想要的设计。
【参考方案1】:
观察以下代码:
class A
public:
int memA;
static int memB;
;
int A::memB = 0;
class B : public A ;
class C : public A ;
int main()
A a;
B b;
C c;
a.memA = 4;
b.memA = 5;
c.memA = 6;
A::memB = 4;
B::memB = 5;
C::memB = 6;
printf("a.memA = %d\n", a.memA);
printf("b.memA = %d\n", b.memA);
printf("c.memA = %d\n", c.memA);
printf("A::memB = %d\n", A::memB);
printf("B::memB = %d\n", B::memB);
printf("C::memB = %d\n", C::memB);
return 0;
这段代码的输出是:
a.memA = 4
b.memA = 5
c.memA = 6
A::memB = 6
B::memB = 6
C::memB = 6
通过将成员设为静态,您可以确保:A) 该成员只有一个实例,并且 B) 所有子类都可以直接访问该成员(假设它不是私有的)。您的 hWnd 不是全局的,因为您的代码是编写的,但是将其设为静态将完成您想要的。
下面的代码就是这样做的:
//header file
class Infinity
public:
static HWND hWnd;
;
//cpp file
HWND Infinity::hWnd = NULL;
您的 Direct3D 类将能够访问由您的 Window 类写入的非空 hWnd。如果您打算创建一个窗口,这仅是一种有效的解决方案 - 否则,您将不得不求助于两个类之间更复杂的父子关系(可能不使用继承)。
【讨论】:
以上是关于DirectX 9安装出现不能信任一个安装所需的压缩文件。请检查加密服务是不是启用并且Cabinet文件证书是不是有效的主要内容,如果未能解决你的问题,请参考以下文章
DirectX12安装工具,不能信任一个安装所需的压缩文件..........W7旗舰版?
DirectX 安装报错: 不能信任一个安装所需的压缩文件,请检查加密服务是否启用并且cabinet文件证书是否有效
我的系统是windows7 64位旗舰版。安Directx时出现,不能信任一个安装所需的压缩文件。请高手指点