Articles of Windows

检索有关当前login会话的信息(Visual C ++,Win 7)

我正在实施Windows解锁程序。 我需要知道,哪些用户目前login。 我试图用LsaEnumerateLogonSessions(…)和LsaGetLogonSessionData(…)方法来做到这一点。 但是结果是我不仅收到了login用户的会话信息,还收到了登出的用户的会话信息。 另外,如果用户注销并login,则会出现另外一个用户会话条目等。 看起来,结果不是当前login会话的列表,而是自上次上电以来存在的所有login会话的列表。 简短的示例代码: LsaEnumerateLogonSessions(sessionCount, &sessionList); for(i=0;i<*sessionCount;i++){ status = LsaGetLogonSessionData(sessionList+i,&sessionData); printf("LUID: %I64d \n", sessionData->LogonId); wprintf(L"user name: %s\n", sessionData->UserName.Buffer); } 有没有解决办法?

创buildWindows用户编程,不用硬编码密码

如何使用一些命令行工具或Windows API或.NET创buildWindows用户,而无需硬编码密码,我需要一种方法来创build一个用户有一些密码,而不知道这个密码,(该程序只知道它的哈希例如) 。 例如: 任何创build具有特殊密码的Windows用户的方法都是这样的: UsersUtil.CreateUser("username", "SpIcif1c_Passw0rd"); 我需要的代码是这样的: UsersUtil.CreateUser("username", "7604905d86ed36b69a657366e5b5c35f"); //"7604905d86ed36b69a657366e5b5c35f" is the hash for SpIcif1c_Passw0rd for example 我需要这个CreateUser方法的代码或类似的东西!

为什么minizip不存档大文件(大于4 GB)

我正在尝试使用Visual Studio 2010在Windows 7 64位上使用静态minizip库。 主要目标是归档更大的4GB文件。 我使用CMake 2.8构buildzlib,并链接到我的项目。 它适用于less于4GB的文件,但不适用于大于4GB的文件。 为什么使用minizip归档5GB文件时遇到问题? 我错过了构build库阶段的东西吗? 这里是我所有的步骤,图书馆和项目: https : //github.com/koponomarenko/file_compression 真的需要帮助。 谢谢。 更新: “对于大于4GB的文件不适用”意味着我的testing程序在此过程中没有任何错误地存档5GB txt文件。 我检查了zipWriteInFileInZip()返回所有5,368,709,120字节的ZIP_OK。 zipCloseFileInZip()和zipClose()不返回任何错误。 但在创build的档案(我使用7-zip)文件信息是: 未压缩的尺寸: 4,294,967,295 压缩尺寸: 8,806,676 属性: 空字段 CRC: 81970625 方法:放气 主机操作系统: FAT 版本: 45 当试图解压缩(使用7-zip)这个压缩文件时,我会收到错误消息“Unsupported compression method”。 我也用7-zip压缩了相同的5GB txt文件 。 这是来自这个档案的文件信息: 未压缩尺寸: 5,368,709,120 压缩尺寸: 9,608,471 属性: A CRC: 81970625 方法:放气 主机操作系统: FAT 版本: […]

JOGL正确的光线和球体reflection

我试图让我的程序中的灯光和reflection正确。 我有一个很大的球体,我可以移动鼠标,这应该是一个光源(LIGHT0),而那些弹跳的小球体应该reflection光线。 我还需要一个方向灯,我可以使用键盘改变方向 首先我定义的一些颜色: float whitish[] = {0.8f, 0.8f, 0.8f, 1}; float white[] = {1, 1, 1, 1}; float blackish[] = {0.2f, 0.2f, 0.2f, 1}; float black[] = {0, 0, 0, 1} 我创build了定向灯 gl.glLightfv(GL.GL_LIGHT1, GL.GL_AMBIENT, blackish,0); gl.glLightfv(GL.GL_LIGHT1, GL.GL_SPECULAR, white,0); gl.glLightfv(GL.GL_LIGHT1, GL.GL_DIFFUSE, white,0); gl.glLightfv(GL.GL_LIGHT1, GL.GL_POSITION, spot_position,0); spot_position最初是[0,0,1,0],但是可以通过按键盘键来改变。 一个按键将0.05增加到位置vector的一个特定分量,直到它达到1,然后它重置为-1(没有什么奇特的)。 中心球体的光线是: gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, position,0); gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, blackish,0); gl.glLightfv(GL.GL_LIGHT0, […]

根据单个标准查找多个(arrayfun)

我试图从一个variables(b)接收所有的值,当使用基于另一个variables(a)的标准(就像在Excel中= IF函数)。 喜欢这个: 例: (a):1 2 2 2 3 3 3 3 (b):3 6 3 5 6 4 5 4 我的标准是 (a) = 2 我的答复是: (b) = 6 3 5 我尝试使用arrayfun来查找解决scheme,如下所示: arrayfun(@(x) b(find(a == x, 1, 'first')), 2) 显然,它只回答了6个符合标准的第一个数字。 我可以以某种方式正确地制定arrayfun? 还是我需要一个完整的其他function? 谢谢!

validation“C:\ Program Files \”是否可写

我有一种情况,用户可以configuration一些文件的目标位置(被下载并安装用于应用程序)。 有两个configuration的位置,系统位置和用户位置。 该应用程序是一个(基于Lua的)命令行工具。 在安装之前,我通过编写一个临时文件并再次删除它来检查正在写入的位置。 如果失败,我重新启动相同的命令与特权提升,这允许pipe理员安装,而不是普通用户。 问题 :系统位置默认位于C:\Program Files\ ,它受保护(而不是问题),并将其redirect到C:\Users\<name>\AppData\VirtualStore\Program Files\…目录。 由于这个redirecttesting成功,东西被安装没有提高特权。 因此最终在VirtualStore ,而不是得到一个错误,用户没有所需的特权。 问题 :那么如何testing实际的C:\Program Files\是否可写,而不需要redirect到VirtualStore呢?

错误与php_http:该程序无法启动,因为您的计算机缺lessphp_propro.dll

我正试图在Windows上安装php_http。 我的configuration是: PHP Version => 5.3.13 Build Date => May 14 2012 02:46:11 Compiler => MSVC9 (Visual C++ 2008) Architecture => x64 Thread Safety => enabled 所以我finalyfind了一个版本的php_http.dll与MSVC9编译,与x64架构和线程安全启用。 现在,当我尝试运行一个PHP脚本,我得到:该程序无法启动,因为php_propro.dll从您的计算机中缺less。 我知道php_http取决于php_propro,但我无法在互联网上find这样的DLL。

处理离开ProcessMapFile可用于进程B.

被谷歌search,但无法find答案。 之前没有使用过MemoryMappedFile 。 刚刚阅读了他们,以实现基本的IPC。 在我投入时间原型之前,谁能告诉我下面的逻辑是否可行? 我想要使​​用一个非持久化的内存映射文件,以便在使用后自动清理。 进程A打开MemoryMappedFile并写入它。 进程A启动进程B 过程A退出 进程B在进程A创build的MemoryMappedFile上执行OpenExisting 进程B从MemoryMappedFile读取数据并进行处理… 进程A和B都将知道文件的名称。 进程A创build的文件是否会保留,直到进程B处理完毕? 什么是机制,应该处理A不Dispose文件,并让stream程B这样做? 如果这个逻辑不起作用,那么我正在考虑进程A等待进程B完成,但这并不理想。 感谢任何的光芒;)

DLL重新加载到他们的首选地址

在Windows Server 2003上,我的应用程序开始花费很长时间来加载全新安装。 怀疑DLL没有加载到他们的首选地址,这需要一段时间(应用程序有超过100个DLL,包括第三方)我运行sysinternals listDLLs实用程序,要求它标记每个已被重定位的DLL。 奇怪的是,对于列表中的大多数DLL我得到这样的东西: Base Size Path ### Relocated from base of 0x44e90000: 0x44e90000 0x39000 validation.dll 那就是:他们被标记为重新定位(并且加载时间肯定似乎支持该理论),但是它们的加载地址仍然是首选地址。 一些第三方DLL似乎不受此影响,但总体而言,这发生在应用程序加载的DLL的90%左右。 在Windows 7上,似乎唯一标记的DLL是实际移动的DLL,加载时间(按预期)显着加快。 这是什么原因造成的? 我怎么能阻止它? 编辑:因为它听起来(在理论上)像ASLR的影响,我检查,而操作系统DLLs确实启用ASLR,我们不是。 甚至是那些被重新安置的地方,因此不会占用任何其他DLL的地址。

closuresWindows控制台的操作

我正在编写一个不需要控制台input的Windows控制台程序。 用户通过点击closuresbuttonclosures它。 有什么方法可以认识到它正在closures执行最后一个动作?