草庐IT

c# - 所有 Windows 计算机都有且无法更改的 ID 或序列号

我正在创建一个程序,在它运行之前从a进行身份验证。我也想拒绝访问。是否有所有Windows计算机都有的无法更改的ID或序列号,我可以将其列入黑名单?我将如何在C#中访问它? 最佳答案 MAC地址实际上可以很容易地更改。这篇文章:包含您想要的信息:HowToGetHardwareInformation.基本上,只需混合一些硬件组件ID,您就应该拥有一个非常可靠的系统key。 关于c#-所有Windows计算机都有且无法更改的ID或序列号,我们在StackOverflow上找到一个类似的问题

c++ - Windows 上通过 C++ 的唯一 CPU ID

好吧,我想获得一个唯一的CPUID,这样我就可以为每台机器获得一个唯一的标识。我确实从windows.h库中检查了__cpuid(),但问题是它得到的ID,它是所有类型CPU的ID,如果你有一个I3核心处理器而我有一个I3核心处理器,它会给相同的“唯一ID”。这是我从__cpuid()生成CPUID的方法,它返回相同类型处理器的相同信息:std::stringGetCPUID(){intCPUInfo[4]={-1};__cpuid(CPUInfo,0);if(CPUInfo[0]我还检查了一个名为“硬件ID提取器”的程序,它运行良好,它实际上返回了一个唯一的CPUID作为我想要的GU

windows - 难道不能从线程 ID 获取句柄吗?

在经典著作《Win32中的多线程应用程序》第31页,有如下说法:Toenforcesecurity,itisnotpossibletoobtainahandlefromathreadID.但是,我知道有一个众所周知的API,即OpenThread,可以完成这项工作。这是本书的错误吗? 最佳答案 有问题的书MultithreadingApplicationsinWin32发表于1996年,早于OpenThread()所在的操作系统功能可用。所以,这本书已经过时了。上面的MSDN链接说OpenThread()需要WindowsXP/20

c++ - 如何在进程间通信中获取其他端点的进程ID

使用Win32C++API,我想知道哪个IPCmethod,允许多进程通信中的任何端点获取与之通信的进程的PID或HANDLE。换句话说,如果进程A从进程B收到一条消息:如果B没有(直接)在发送的消息中给出任何提示,A可以知道B发送了消息吗?如何?要求:B的PID不能在IPC消息中发送给A。通信的目的是简单的远程过程调用。但是,我不希望远程系统/主机上的进程调用本地主机上运行的进程提供的过程。我当然找到了RPCdocumentationonMSDN.但是,我想知道是否有比RPC更好的方法来实现我想要的。或者,如果您认为RPC是可行的方法,能否告诉我原因以及您是否知道除MSDN之外还有其

c# - 在全屏 3D 应用程序中获取桌面屏幕截图

在使用全屏3D应用程序(例如游戏)时是否可以将桌面渲染成屏幕截图?还是在游戏运行时windows会关闭渲染引擎?我正在寻找在我的游戏中将桌面渲染成纹理的方法。类似RDP的协议(protocol)可以成为解决方案吗?编辑:澄清一下,是否有任何深层次的api机制来强制渲染到另一个缓冲区,例如在制作屏幕截图时。不管是Windows7还是Windows8/9。 最佳答案 您可以通过在桌面窗口的hWnd上调用PrintWindowWin32API函数来获取屏幕截图。我在Windows7和Windows8.1上试过这个,它甚至在另一个应用程序(

windows - PSExec 中的 session ID

Psexec无法在远程session上为我显示记事本GUI。所以,我正在尝试获取sessionID,如下所示:c:\Users\Amitra\Downloads\PSTools>PsExec-uadministrator-pforce\\135.20.230.160querysessionPsExecv2.11-ExecuteprocessesremotelyCopyright(C)2001-2014MarkRussinovichSysinternals-www.sysinternals.comSESSIONNAMEUSERNAMEIDSTATETYPEDEVICE>services0

windows - 在配备 GeForce 960M 的笔记本电脑上初始化 D3D12 调试接口(interface)失败

当我尝试使用标志DXGI_CREATE_FACTORY_DEBUG调用D3D12GetDebugInterface或CreateDXGIFactory2时,调用在我的笔记本电脑上失败,但在我的台式机上却没有。其他调用在笔记本电脑上运行良好,我可以渲染东西——我只是无法初始化调试层。桌面有一个老式的GeForce650Ti,笔记本电脑是戴尔XPS15笔记本电脑(最新一代),它有一个GeForceGTX960M。两者都有最新的驱动程序(361.43)。有什么想法可能会出错吗?我在NVIDIA上发布了devtalkforum首先,但交叉发布到stackoverflow,因为NVIDIA官方论

c++ - ID3D11DeviceContext::Map 性能低下

我正在使用桌面复制将屏幕内容复制到内存中的位图中。我收到桌面纹理,然后创建暂存纹理,使用CopyResource将桌面纹理复制到暂存纹理中,最后调用ID3D11DeviceContext::Map访问暂存纹理位和复制它们。与此处描述的方式几乎相同:https://stackoverflow.com/a/27283837/825318问题是Map调用需要花费大量时间-对于4K等大型显示分辨率,每次调用最多可能需要100毫秒,这高得令人无法接受,因为我需要确保30fps速度。有没有什么办法可以更快的获取贴图的内容?如果没有,有没有办法提供我自己的映射地址指针,以便系统将纹理数据复制到那里?

c++ - 在 direct3d 应用程序中呈现格式化文本

我需要呈现一些格式化的文本(颜色、不同的字体大小、下划线、粗体等),但我不确定如何去做。D3DXFont只允许一次呈现单一字体/大小/粗细/颜色/等的文本,我看不到一种实用的方法来“组合”对ID3DXFont::DrawText的多次调用来做这样的事情......我环顾四周,似乎没有任何现有的库可以做这些事情,但我不知道如何实现这样的文本渲染器,我什至找不到任何关于如何渲染这样的文本的文档会工作,只渲染简单的固定宽度,ASCII位图字体,从表面上看可能是一种完全不同的方法,它只适用于渲染简单的文本block,其中Unicode不重要。如果没有direct3d字体渲染能够做到这一点,是否

二进制的 C++ Windows 进程 ID

我想在Windows上用C++将程序的进程ID(通过程序本身)写入文件(首选二进制文件)。我看到函数的使用:GetProcessId,但我没有设法使用它。1)如何使用?2)如何将值转为二进制并写入文件?谢谢 最佳答案 您可以使用GetCurrentProcessId()获取当前进程的进程ID。然后你可以使用ultoa使用基2(和大小为sizeof(DWORD)*8+1)的缓冲区将该数字转换为字符串,然后您可以使用ofstream或fwrite将其写入文件。例子:DWORDid=GetCurrentProcessId();charbu