Articles of Windows

如何从Windows应用程序内存读取一些数据?

我有一个应用程序,显示一些数据。 我需要附加到这个应用程序的进程,find我需要在内存中的数据(实际上是一个单一的数字),并保存在某个地方。 这个应用程序似乎不使用标准的Windows控件,所以事情不会像使用AutoIt或类似的东西读取控件数据那么简单。 目前我是一个自学者数据库的家伙,并有相当的Windows应用程序debugging知识浅。 甚至不知道我是否正确地问了我的问题。 那么,你能否给我一些关于我应该先读什么的启动指南,以及我应该处理的大方向? 谢谢。

为什么Windows为其系统地址空间预留1Gb(或2 Gb)?

众所周知,Windows应用程序通常在32位系统上拥有2Gb的专用地址空间。 这个空间可以通过/ 3Gb开关扩展到3Gb。 操作系统保留其余的4Gb。 我的问题是为什么? 以内核模式(即设备驱动程序代码)运行的代码有自己的地址空间。 为什么在独占的4Gb地址空间之上,操作系统仍然要保留2Gb的每个用户模式进程? 我认为原因是用户模式和内核模式调用之间的转换。 例如,对NtWriteFile的调用将需要一个内核调度例程的地址(因此为什么系统在每个应用程序中预留2Gb)。 但是,使用SYSENTER ,是不是足够的内核模式代码知道哪个函数/服务被调用的系统服务号? 如果您可以向我澄清,为什么操作系统在每个用户模式进程中占用2Gb(或1Gb)是如此重要。

使用PHP远程查询WMI

我目前的代码如下所示: define ( 'CPU_NAME', 'remote_server' ); $obj = new COM ( 'winmgmts:{impersonationLevel=impersonate}//' . CPU_NAME . '/root/cimv2' ); if ( is_object ( $obj ) ){ $process = $obj->execquery ( "SELECT * FROM Win32_Process" ); } 我会在哪里放置remote_server的login凭据? 我看到这将需要一个用户名和密码,但我不知道如何实现。 任何帮助,将不胜感激。 参考: http : //us3.php.net/manual/en/class.com.php

如何获得Windowsaudio播放的当前采样率?

我正在使用Windows waveOut API(又名MME或多媒体扩展)mmsystem.h。 某些程序改变了audio重放采样率(例如从44.1kHz到48kHz),这对我的程序检测当前重放采样率非常有用,所以它可以警告用户Windows将重新采样程序的输出。 根据此文档http://msdn.microsoft.com/en-us/library/aa909811.aspx,waveOutGetPlaybackRate返回设备当前正在执行的重采样%(例如,设备以44.1播放,而程序以44.1播放audio所以它会返回1.0)。 我很好奇,如果有一种方法来获得设备的绝对采样率,而不是相对的东西。 在Windows Vista / 7/8中,您可以通过以下方式手动查找该值:控制面板>声音>播放,右键单击默认播放设备并select属性,然后select高级选项卡。 所以我试图通过查询操作系统来获得这里的“默认格式”值。 有问题的程序是用Pascal编写的,但是我通常使用C / C ++引用。

x64本地工具命令提示符和x64交叉工具命令提示符有什么区别?

我在64位的Windows 8.1上安装了32位的Visual Studio 2013。 我有5个命令提示符: 开发人员命令提示VS2013 VS2013 ARM交叉工具命令提示符 VS2013 x64交叉工具命令提示符 VS2013 x64本地工具命令提示符 VS2013 x86本机工具命令提示符 我不明白之间的区别: VS2013开发者命令提示符VS2013 x86本地工具命令提示符 VS2013 x64交叉工具命令提示符VS2013 x64本地工具命令提示符

IWebBrowser2对象使用IE7版本,而不是安装在机器上的IE版本

我正在使用IE8浏览器的Win7机器上进行开发(同样的事情也发生在IE9上)。 我已经创build了一个embedded在本地窗口中的IWebBrowser2对象的应用程序。 在那个浏览器对象中,我执行一个javascipt代码: var txt = "Browser Name: " + navigator.appName + "\n"; txt += "Browser Version: " + navigator.appVersion + "\n"; alert(txt); 我收到以下警报: 这证实了我以前的担心 – 即使在我的机器上安装了IE8 \ IE9时 – IWebBrowser2对象的行为就像IE7一样 (包括所有烦人的HTML \ CSS行为)。 有人知道为什么吗? 或更好 – 如果有任何可能embedded浏览器对象为IE8 \ IE9(分发 – 所以它应该是合法的) 谢谢,

在本地代码中使用Windows环境variables

// I have a permission to create a file to Program Files const std::wstring sFileName = L"%ProgramFiles%\\aaa.txt"; HANDLE h = CreateFileW( sFileName.c_str(), GENERIC_READ, FILE_SHARE_DELETE, 0, CREATE_ALWAYS, 0, 0); // INVALID_HANDLE_VALUE with ERROR_PATH_NOT_FOUND 我期望它使得C:\ Program Files \ aaa.txt或C:\ Program Files(x86)\ aaa.txt取决于Os的环境。 但它没有工作。 怎么了? 如何在本地代码中使用环境variables?

Virtualenv不断加载在Windows上的全球网站包

我环顾四周,我发现的问题的答案还没有让我解决它。 我想使用孤立的virtualenv环境,但由于某种原因,virtualenv不断加载全球网站包,当在Django的壳… 我试图清理PATHvariables,直到只剩下c:\ Python26 \ Scripts和c:\ Python26。 然后我创造我的环境。 virtualenv –distribute –no-site-packages myproject 然后我激活virtualenv。 现在PATH(无关的variables): PATH=E:\Development\django_projects\myproject\Scripts;C:\Panda3D-1.7.0\python;C:\Panda3D-1.7.0\bin;c:\python26\Scripts; PYTHONPATH=C:\Panda3D-1.7.0\ 到现在为止还挺好。 我启动python … >>> import django Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named django 让我们试试一个模块,我确定在我的c:\ python site-packages目录下。 >>> import BeautifulSoup Traceback (most recent call last): File "<stdin>", line 1, in <module> […]

使用SC.exe设置服务凭据密码失败

我知道这个问题过去曾被问过,但是没有提供一个满意的答案。 我正在使用SC命令来configuration服务的凭据。 SC.exe config "SERVICE NAME" obj= "domain\user" password= "password" 这成功完成,但是当我启动服务时,它不能执行login。 [ NET START "service name" ] 如果我手动更新从services.msc的密码,那么当我启动服务,它工作正常。 我有数百台服务器来更新这个更改发生在部署的中间,所以手动干预不是一个选项。 我已经尝试使用configuration来更新login帐户,然后另一个configuration命令的密码。 从所有帐户, SC.exe不适用于密码和Microsoft没有帮助。 想法?

调整非特权帐户(C,Windows)上的令牌

我正在使用下面的代码(这是来自MSDN稍微修改的示例)来检查我是否对进程具有debugging权限。 如果我不尝试设置它们。 int SetDebugPriv() { HANDLE TokenHandle; LUID lpLuid; TOKEN_PRIVILEGES NewState; if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle)) { //failed return 0; } if(!LookupPrivilegeValue(NULL, "SeDebugPrivilege" , &lpLuid)) { //failed CloseHandle(TokenHandle); return 0; } NewState.PrivilegeCount = 1; NewState.Privileges[0].Luid = lpLuid; NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if(!AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, sizeof(NewState), NULL, NULL)) { //failed CloseHandle(TokenHandle); return 0; } CloseHandle(TokenHandle); return 1; } 现在,在Windows […]