Articles of Windows

使用MS CryptoAPI保存/恢复证书使连接的私钥失效

我写了一个程序,应该使用Windows Crypto API保存和恢复用户证书。 我的印象是,它工作正常,但现在用户抱怨说,证书已被恢复后,附加到证书的私钥是无效的。 我正在使用以下方式保存证书: HCERTSTORE hCertStore = CertOpenStore(CERT_STORE_PROV_PHYSICAL_W, 0, NULL, CERT_SYSTEM_STORE_CURRENT_USER | CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG | CERT_STORE_UPDATE_KEYID_FLAG, (PVOID) storeName.c_str()); 再后来: if (!CertSaveStore(hCertStore, 0, CERT_STORE_SAVE_AS_STORE, CERT_STORE_SAVE_TO_FILENAME, (PVOID) saveFile.c_str(), 0)) 我明白,CERT_STORE_SAVE_AS_STORE标志应该意味着整个证书应该被序列化,包括私钥。 虽然我注意到MSDN说: “CERT_KEY_CONTEXT_PROP_ID属性和相关的CERT_KEY_PROV_HANDLE_PROP_ID和CERT_KEY_SPEC_PROP_ID值不会被保存到序列化的商店”。 ..我承认,我真的不明白。 当我恢复证书时,我使用CertFindCertificateInStore()来查看证书是否已经存在,只有当证书不存在时,我才会这样做: bOK = CertAddCertificateContextToStore( hDestinationStore, pCertContext, CERT_STORE_ADD_USE_EXISTING, NULL); 为了添加证书…所以我的问题是,为什么私钥不能被保存? 我错过了什么吗?

为什么cvWaitKey(0)不起作用?

我不知道为什么,但出于神秘的原因,我的c + +应用程序不再等待,当它达到cvWaitKey(0)它只是通过这条线,就像这个函数什么都不做! 我也试过cvWaitKey(100000),它不工作… void main() { cvWaitKey(0); return; } 我的项目有点复杂,我使用Visual Studio 2010,它包括opencv ffmpeg pthread winsocks和一些其他库。 你能猜到为什么会这样?

没有pipe理员权限,是否可以在Windows XP上运行Oracle?

我有共享计算机,pipe理员安装Oracle XE。 但我不能创build新的用户,因为我没有权利在操作系统,afaik。 在Oracle写的文档中,DBA应该是pipe理员组的成员。 存在的方式,我可以pipe理本地实例XE没有pipe理员权限? 我需要启动/停止数据库,连接/断开,终止会话等。这是需要testing我的Java应用程序。 谢谢。

在Windows 8上安装AppFabric

我试图在Windows8上安装AppFabric 1.1。 它设置要求.net框架3.5。 Windows 8是与.net框架4.5。 为什么要问.NET Framework 3.5? 我应该做什么来安装AppFabric? 谢谢

写第1行到第i行的.txt文件

我非常接近我的答案,但我似乎无法find答案。 我在batch file中使用Findstr函数来将整个目录的范围缩小到只有一个文件。 cd … findstr /s /m "Desktop" *class.asasm >results1.txt findstr /m /f:results1.txt "Production" *class.asasm >results2.txt findstr /n /f:results2.txt "Capabilities" *class.asasm >results3.txt 任务1:我需要找出一种方法来使findtr向后search第三行的行号find第四个string 任务2:我需要写第1行 – 我们到达的文件中的results2.txt插入一个.txt文件。 然后写下其余的原始行。 我正在使用Visual Studios编写一个VB.Net应用程序,我很难搞清楚如何完成这个过程。 我现在有更好的应用程序运行在应用程序中写入batch file。

在Windows上使用echoclosurescmd.exe

我想知道如何启动一个cmd.exe窗口与回声已经closures。 例如,我有以下命令行: start cmd /k test.exe 在新的cmd窗口中启动test.exe 。 但在这个cmd窗口中,回显是打开的。 是否有可能在一个新的cmd窗口启动test.exe回声closures?

批处理脚本(bat或cmd) – &符号之前的空格(或自动转义符号)

注意:我知道^符号可以用来在批处理脚本中转义符号。 但是我需要自动完成转义,因为path是在运行时构build的。 下面的示例脚本仅仅是显示问题,而不是实际的脚本。 脚本输出后请阅读我的解释。 由于某些原因,批处理脚本中的命令对于path中的与号( & )符号performance不佳。 假设你有一个test.cmd或test.bat脚本,如下所示: set TEST=AE echo %TEST% set TEST="AE" echo %TEST% set TEST=AE echo %TEST% set TEST="AE" echo %TEST% set TEST=A & E echo %TEST% set TEST="A & E" echo %TEST% set TEST=A&E echo %TEST% set TEST="A&E" echo %TEST% 这是输出: C:\>set TEST=AE C:\>echo AE AE C:\>set TEST="AE" C:\>echo "AE" "AE" […]

如何使用Windows PowerShell的正则expression式删除一个文件名末尾的一个或多个空格?

我有一个目录包含了很多文件格式错误的文件名。 其中一些在文件名末尾有“空格”。 其他人在文件名string的末尾有一些在文件名中网格化的关键字。 例如“xxx xxx xxx somewordEng .txt” 即时通讯试图摆脱他们使用这个脚本,但它不会做。 文件名(基本名称)末尾的空格仍然存在,“Eng”关键字也是以前添加到该单词中的: dir | Rename-Item -NewName { $_.BaseName.replace("Eng$","").replace(" {2,}"," ").replace("\s$","") + $_.Extension } .replace("Eng$","") is supposed to remove the "Eng" keyword if it appears at the END of the filename (basename), seems not working so far. .replace(" {2,}"," ") is supposed to replace 2 or more following […]

MinGW可以毫不费力地复制大多数Unix系统调用吗?

背景:我正在开发一个专门用于unix系统的C ++开发的大型项目,以便与windows兼容,为最终的Windows发行版做好准备。 我在Windows开发方面没有太多的经验,但是我希望在高级开发人员搬进来接pipe之前,尽我所能,做正确的事情。 问题:所以有一段时间,我一直在为所有在软件中使用的unix / posix调用寻找Windows版本,其中大部分来自dirent.h,unistd.h,还有一些在sys下,比如sys / stat .h或sys / types.h。 尽pipe修改程序以采用新的Win32 API调用约定和返回types(有时候是所有新函数)需要很多工作,但最终可能会起作用。 但是我经常看到这个问题,我猜MinGW包含许多原生的unix调用和function作为GCC环境的一部分,并且可以将它们翻译成与windows兼容的调用,以便在Windows上编译,以及在Windows上使用上述编译的程序很容易。 事实上,我在侧边栏中读到的一个类似的问题就是这个问题。 我不理解,似乎也有理解上的困难,这正是这种内置的翻译function的程度,我在哪里可以find一个系统的东西,将与此一起工作的清单。 对不起,这篇文章有些没有结构化,而且我非常青涩,但是我只有2个星期的时间才能完成这个任务,然后和一个高级开发人员交换。

如何使用PostThreadMessage从C ++closuresInternet Explorer

我试图启动iexplore.exe让它运行5秒,然后再closures它。 iexplore打开就好,但是当我调用PostThreadMessage时,它不会closures。 任何人都可以看到我做错了什么? 这是我的代码: CString IEPath = "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE";//GetIEPath(); //IEPath += ' ' + url; std::string strCommand((LPCTSTR)IEPath); PROCESS_INFORMATION procinfo; STARTUPINFO startupinfo; GetStartupInfo(&startupinfo); CreateProcess( NULL, (char *)strCommand.c_str(),// name of executable module NULL, // lpProcessAttributes NULL, // lpThreadAttributes false, // handle inheritance option CREATE_SHARED_WOW_VDM, // creation flags NULL, // new environment block NULL, // current directory […]