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 在您的代码中不是全局变量,它是一个数据成员。 @NmdMystery hWnd 不应该在这个类结构中充当全局吗?两个类都继承自Infinity 不,因为它是一个实例变量。所有实例变量都是对象的本地变量。如果您实例化一个 Window 类型的对象,然后实例化另一个 Direct3D 类型的对象,它们将各自拥有自己的 hWnd 实例。您可能想要做的是制作 hWnd static,这样就只有一个 hWnd 副本,并且所有继承类都可以访问它(当然,如果您只打算制作一个窗口)。 嗯,我试过了,收到了LNK2001LNK1120 (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时出现,不能信任一个安装所需的压缩文件。请高手指点

不能信任一个安装所需的压缩文件。请检查加密服务是不是启用并且cabinet文件证书是不是有效。

安装MicrosoftDirectX出现问题

为啥好多东西运行不了。出现“找不到所需的.dll文件?”