Articles of Windows

非常奇怪的段错误调用WinUsb_GetOverlappedResult

我有这个代码: void GetResult(WINUSB_INTERFACE_HANDLE InterfaceHandle, LPOVERLAPPED lpOverlapped) { DWORD numBytes = 0; WinUsb_GetOverlappedResult( InterfaceHandle, lpOverlapped, &numBytes, TRUE ); return; uint8_t stack[64]; } WinUsb_GetOverlappedResult是一个__stdcall函数声明如下: WINBOOL WINAPI WinUsb_GetOverlappedResult (WINUSB_INTERFACE_HANDLE InterfaceHandle, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, WINBOOL bWait); 在debugging模式下使用GCC 5.3.0(MinGW)编译它一切正常。 (我不能用VC ++编译,因为我使用的是GCC扩展。) 但是,如果我改变它stack[80]然后它segfaults! 这里是每种情况下的反汇编。 64(不崩溃): Dump of assembler code for function GetResult(void*, _OVERLAPPED*): 88 { 0x00408523 <+0>: push %ebp 0x00408524 […]

C ++程序需要一个文件关联

我正在发行一个免费软件产品,用一个独特的扩展名来读写文本文件。 我希望双击这样的文件会自动启动应用程序。 在Windows 7 Professional上开发时,我通过双击打开文件,方法是右键单击文件 – >打开方式…->select默认程序…->浏览…,然后“总是使用选定的程序来打开这种types的文件。” 好。 它只是做了它需要的。 我准备发布我的程序,并提供给用户相同的说明。 但是,当我移动二进制文件的位置时,我看到“总是使用”现在变成灰色/不敏感,所以虽然我可以浏览到新的二进制文件,但我不能将其设置为默认值。 由于我认为我的用户也会遇到麻烦,所以我想看看是否可以安装或运行程序来处理映射。 我看了Windows安装程序大约5分钟,然后确定它比我需要更多的权力和复杂性(为了我的需要,一个zip文件将是足够的,除了这个文件映射。 所以我看了一下,让我的程序在启动的时候,如果已经不存在的话,就build立映射本身。 (我知道如果我们谈论的是一个普通的文件types,如.html或.jpg,这将是非常糟糕的行为,但在这种情况下,它的一些.blahblah扩展肯定没有其他人使用任何东西。) 基于http://www.cplusplus.com/forum/windows/26987/和http://msdn.microsoft.com/en-us/library/cc144148(v=vs.85).aspx上的信息,我可以让我的程序在启动时打开HKEY_CLASSES_ROOT \ .blahblah,并确认(并在需要时更改)默认文本是对文件的精确描述(replace一些文本,这些文本可能在我手动关联时默认创build夏季)。 但是,当创buildHKEY_CLASSES_ROOT \ firm.app.1 \ shell \ open \ command时,我的RegCreateKeyEx()包装程序正常工作以更改\ .blahblah的值,现在给出返回代码5,显然是缺less权限。 在进一步的研究看来,权限模型可能会导致所有这样的请求失败。 任何人都可以证实或否认这一点? 如果确认,是否有一个很好的参考我应该研究这个问题? 否则,有什么build议? 我应该咬紧牙关学习Windows Installer吗? 还是有办法获得我自己的软件第一次启动时需要编辑registry的权限? 注意我正在使用Windows 7 Professional上的Visual Studio 2008进行开发,尽pipe仍然是一个业余的Windows程序员,但自80年代以来,我一直在从事Unix / Linux的C ++工作。

使用.bat文件的自定义Tee命令

我正在尝试使用为bat文件编写的T恤代码,但是在执行代码时遇到问题。 我不希望使用任何第三方安装来解决问题,因为如果我在一年内格式化计算机并希望再次运行该程序,我希望代码能够正常工作。 我有这样的设置: mycommand.exe | tee.bat -a output.txt 我已经试过了一个单独的.bat文件,并试图包括作为一个函数(优先)在原来的.bat无济于事: myprogram.exe | call tee -a output.txt echo. echo. echo. SET /P restart="Do you want to run again? (1=yes, 2=no): " if "%restart%"=="1" GOTO LoopStart ::——————————————————– ::– Function section starts below here ::——————————————————– :tee :: Check Windows version IF NOT "%OS%"=="Windows_NT" GOTO Syntax | :: Keep variables […]

图标覆盖处理程序的命名空间扩展

我正在开发命名空间扩展,它提供了服务器上的文件的虚拟视图。 在这个视图中,我需要使用叠加图标提供不同的状态(使用中,离线,不同步等)。 我通过实现覆盖处理程序的文章阅读,并认为我会尝试在我们的覆盖处理程序之一,实现IShellIconOverlayIdentifier接口处理此。 我看到IShellIconOverlayIdentifier :: IsMemberOf()和其他函数只有当我访问正常文件系统上的文件,即c:\,d:\等时才被调用。当我浏览命名空间扩展时,根本不会调用这些调用。 这是为什么? 如何在命名空间扩展中为对象实现覆盖? 问候,Madhu

如何在Parallels中运行Windows 8的Mac上设置Git

我想知道什么是在MacBook Pro上安装Git的最佳方式,在Parallels中,OS X Mountain Lion 10.8与Windows 8 Pro? 我不太确定什么是最好的工作stream程。 我应该在两个平台上安装Git,还是应该将所有文件存储在一个平台上,然后安装Git? 我问的原因是因为我打算在学校项目上使用Windows上的Visual Studio,并使用Sublime Text / XCode来处理Web开发和iOS应用程序。 谢谢。

如何计算给定date的星期数?

如果我有date,那么我怎样计算当年的那个星期的数字? 例如,2008年1月1日到1月6日是第1周,1月7日到13日是第2周,如果我的date是2008年1月10日,那么我的周数是2。 一个algorithm将是伟大的,让我开始和示例代码也将有所帮助 – 我在Windows上的C ++开发。 有关: 在MS SQL Server 2005中取得一个date的星期号码?

为什么我的卷影复制服务请求程序失败:找不到CreateVssBackupComponentsInternal

我已经实现了一个VSS请求者,它链接编译并在Windows Server 2008上执行,但不在Windows Server 2003上执行。由于我的请求者在一个DLL中,我的DLL将不会加载。 使用Dependency Walker ,我发现我的DLLfindVSSAPI.DLL就好,但它报告: Error: At least one required implicit or forwarded dependency was not found. 看看我的VSSAPI.DLL,它找不到CreateVssBackupComponentsInternal ,而VSSAPI.DLL导出完全不同的东西: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z

从Windows服务加载GUI应用程序

我正在编写.NET Windows服务,其作用是启动GUI应用程序(其源不可用)。 除了初始命令行参数之外,操作是一场火灾,忘记了,没有任何交stream。 该服务应该作为给定的Windows帐户运行。 问题:服务启动的应用程序不显示在桌面上。 它需要,因为它是一个交互式的应用程序。 解决办法是什么? 注意:这是系统的规格和devise。 服务/应用程序通信和安全方面提出的典型问题不适用于此特定情况。 编辑:当以本地系统帐户login时,GUI元素显示正确,但由于GUI应用程序需要访问联网驱动器(无法理解UNC映射),因此需要将其作为指定的用户帐户运行,没有“显示交互元素”设置。 编辑2:操作系统是Windows 2003 Server,并没有计划升级它。

使用registry来启动一个程序,也改变当前的工作目录?

我试图启动一个我在这个目录下的程序: C:\example\example.exe -someargument 当电脑启动时。 我正在尝试使用此registry项: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 关键是: Name: example Type: REG_SZ Data: "C:\example\example.exe -someargument" 但是我的程序也需要C:\ example目录中的文件,但是由于当前的工作目录不同,所以找不到它们。 有可能在registry键值中做这样的事情 "cd C:\example\; example.exe -someargument" 这样它会改变目录? 还是有更好的解决scheme? 谢谢!

从Pythonregistry中读取HKEY CURRENT USER,指定用户

在我的应用程序中,我运行几个不同的用户帐户下的subprocess。 我需要能够读取这些subprocess写入registry的一些信息。 每个人都写入HKEY_CURRENT_USER,我知道他们正在运行的用户帐户名称。 在Python中,如何从特定用户的HKEY_CURRENT_USER读取值? 我假设我需要以某种方式加载用户名下的registry值,然后从那里读取它们,但是如何? 编辑:只是为了确保清楚,我的Python程序是以pipe理员身份运行的,而且我拥有帐户“user1”,“user2”和“user3”,每个帐户都有自己的HKEY_CURRENT_USER中的信息。 作为pipe理员,我如何读取user1的HKEY_CURRENT_USER数据?