Articles of winapi

如何在C ++的窗口中获得用户的最大进程数

我有一个非常微不足道的问题,但我无法在Google中得到任何答案。 据我所知,用户可以创build的最大进程数量是有限制的。 我怎样才能得到这个variables到C ++? 我正在使用Visual C ++,Visual Studio 2013。 非常感谢。

枚举窗口时发生

试图运行以下代码时遇到问题: #include "header.h" int main() { id = GetCurrentProcessId(); EnumWindows(hEnumWindows, NULL); Sleep(5000); //MoveWindow(hThis, 450, 450, 100, 100, TRUE); system("pause"); return 0; } //header.h #include <cstdio> #include <cstdlib> #include <iostream> #include <Windows.h> using namespace std; DWORD id = 0; HWND hThis = NULL; BOOL CALLBACK hEnumWindows(HWND hwnd, LPARAM lParam) { DWORD pid = 0; pid = […]

使用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); 为了添加证书…所以我的问题是,为什么私钥不能被保存? 我错过了什么吗?

RegCreateKeyEx()和GetLastError()

为什么RegCreateKeyEx()返回一个LONG ,而不是通过SetLastError()设置DWORD错误代码? 将它的LONG返回值转换为DWORD ,然后将它设置为SetLastError()的全局错误代码是否安全? http://msdn.microsoft.com/en-us/library/windows/desktop/ms724844(v=vs.85).aspx

夏令时和使用WinAPI进行的UTC到本地时间转换

我试图看看是否从本地转换到UTC时间,反之亦然是准确的夏令时。 例如,让我们拿LocalFileTimeToFileTime API。 其描述中指出: LocalFileTimeToFileTime使用时区和夏令时的当前设置。 因此,如果是夏令时,即使您正在转换的时间处于标准时间,此function也会考虑夏令时。 所以我用这个代码testing它: //Say, if DST change takes place on Mar-8-2015 at 2:00:00 AM //when the clock is set 1 hr forward //Let's check the difference between two times: SYSTEMTIME st1_local = {2015, 3, 0, 8, 1, 30, 0, 0}; //Mar-8-2015 1:30:00 AM SYSTEMTIME st2_local = {2015, 3, 0, 8, 3, […]

为什么GetFileAttributesW(L“C:”)返回FILE_ATTRIBUTE_REPARSE_POINT?

通常, GetFileAttributesW(L"C:")返回0x10 ( FILE_ATTRIBUTE_DIRECTORY ),这是合理的。 在某些情况下, GetFileAttributesW(L"C:")将返回0x2416 ( FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_REPARSE_POINT | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED ) 我想知道是什么让它发生,以及如何摆脱它。 这个问题使boost::filesystem::canonical不能工作。 你有什么主意吗?

LoadLibrary()的相对地址为dll

我想在我的代码在Windows中加载DLL,我用LoadLibrary()函数成功加载我的DLL,但我有一个问题,我给我的DLL的path如: LoadLibrary(C:\\path\\to\\my\\dll); 我不知道是否可以给我的DLL的相对path。 我的意思是例如: LoadLibrary(.\my dll directory\my dll.dll) 可能吗? 如果没有,我怎样才能开发我的项目,它可以是便携式的,而不改变在不同的机器上的DLL的path?

安全地移除已安装的驱动器

我有一个应用程序,通过SATA接口将文件写入格式化为NTFS的外部驱动器。 在closures应用程序之前,我确保使用FlushFileBuffers为每个文件(即CreateFile , FlushFileBuffers , CloseHandle )刷新所有内容。 然后我卸下驱动器,没有先卸载它! 将驱动器插入PC机时似乎工作正常。 但是,将其插入OS X时,操作系统似乎找不到任何文件,除非该驱动器已正确卸载。 有什么可以从磁盘丢失导致OS X找不到任何东西,有没有办法,我可以刷新数据,而无需卸载驱动器? 编辑: 与exfat我有问题,“脏”的驱动器重新安装时不可写入。

有没有办法使用win32 API调用获取MachineGuid(而不是从registry中进行手动读取)?

有没有什么办法可以使用win32 API调用来获取MachineGuid(不是从registry中手动读取)?

Pythonsubprocess无法捕获Windows程序的输出

使用stdout=subprocess.PIPE停止输出到控制台,但是不会捕获任何内容。 >>> import subprocess >>> proc = subprocess.Popen(['C:\\Users\\me\\program.exe']) >>> ERROR: please provide an argument // TRUNCATED USAGE OUTPUT proc.wait() 0 >>> proc = subprocess.Popen([''C:\\Users\\me\\program.exe''], stdout=subprocess.PIPE) >>> proc.communicate() ('', None) 我已经尝试了每个组合可用在stackoverflow。 shell=True没有工作。 产生一个子cmd没有奏效。 subprocess.check_output捕获任何东西。 我很高兴在评论中重试这些命令。 我猜这与程序附加到shell有关。 这是程序用来输出的程序集( mcall只是一个将内存alignment到16位的macros)。 我包含这个的原因是GetStdHandle正在影响事情。 console_write PROC ; rcx MSG ; rdx LEN prologue push rcx push rdx xor rcx, rcx mov […]