Articles of Windows

在Windows上自我更新的exe

我正在尝试创build一个脚本,它将在服务器上检测到新版本时“自动更新”。 最初,我的想法是,当检测到新版本时,下载文件,然后启动一个DOSbatch file,用新文件覆盖原来的exe文件。 我想,我可以使用sytem(开始update.bat),然后立即退出0; .bat文件等待几秒钟,然后尝试删除旧的exe文件。 这个失败了,我猜是因为即使在使用系统(start …)时,新的“进程”实际上是一样的进程,这是正确的吗? 有没有办法从Windows启动一个全新的进程,这将允许我删除.exe? 还是有不同的方法会更好? 谢谢,Eric Seifert

如何强制Windows FAT32驱动程序重新加载FAT表?

我正在实现自定义的Windows磁盘驱动程序,并且需要FAT32的Windows驱动程序重新加载FAT表,1和2,这是低于数据部门。 如何做到这一点? 我需要更快的方法,而无需卸载驱动器。 为什么我这样做是因为磁盘是内存虚拟磁盘,在访问扇区过程中从networking中获取数据。 我在即时编写目录数据,它的工作,但不是文件 – 因为在驱动程序获取FAT时 – 群集是免费的,所以文件无法正常工作。 我disasemblefastfastfat.sys,发现了一些要点…至less我发现设备的ioctl代码,可能会重新加载胖表,我会张贴在这里,如果我成功了。

创build暂停/可恢复线程的最佳方法是什么?

我正在做一些networking编程的微处理器发送低缓冲区通知,我有一个线程,写一个设置的信息量。 完成后,需要进入挂起状态并等待低缓冲区通知恢复。 使用Windows的线程池API,还是使用CreateThread()创build的线程更好?

C ++调用远程对象的方法(RPC一样)

我正在寻找一个RPC库,允许我在另一个进程(在Windows)中调用一个对象的成员函数。 当前遇到的问题是一些Serverside对象已经存在并且有多个实例。 服务器应该能够将指针/标识符传递给实现代理的客户端,然后将代理指向远程对象实例。 所以我基本上想要的是这样的: Client: TestProxy test = RemoteTestManager.GetTestById(123); test.echo("bla"); 其中Test的实例已经存在于服务器上,而RemoteTestManager是客户端在另一个rpc调用中获得的服务器上的pipe理器类。 另外,它应该优先运行命名pipe道,因为可能有多台服务器在同一台机器上(实际上我想更像一个简单的IPC:D)。 所以我的问题实际上是:是否有像这样的C ++在那里,或者我必须自己编写一个

睡眠()function不工作?

我在Windows上的Code :: Blocks中使用GNU GCC编译器。 为什么不睡(秒)在这里工作? 我试过它使用库,它工作正常。 谢谢。 编辑:由“不工作”我的意思是,不编译。 抱歉。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]){ char * c = (char *) malloc(sizeof(char)*50); if(–argc>0){ printf("POTATO: \n"); while(argc>=1){ printf("- %s\n", argv[argc]); sleep(10); argc–; } printf("\n"); } printf("A\n"); scanf("%s", c); printf("What you wrote: %s\n", c); scanf("%s", c); return 0; }

不能在gvim(windows)中用Cscope插件使用CTRL- <Space>

组态 Windows 7 Service Pack 1(64位) VIM 7.4(2013年8月10日),32位GUI版本 来自www.vim.org的2.0.0版的cscope_macros.vim插件 问题 该插件使用'CTRL-spacebar'或<CTRL-@>将几个cscope查找函数映射为水平或垂直分割,因为这是VIM如何根据插件文档识别的。 这里是插件的一个片段: " Using 'CTRL-spacebar' (intepreted as CTRL-@ by vim) then a search type " makes the vim window split horizontally, with search result displayed in " the new window. " " (Note: earlier versions of vim may not have the :scs command, but it […]

使用NSIS将应用程序文件安装到标准的Windows用户

我有一个应用程序,需要一个SQLite数据库才能运行。 在我的NSIS脚本中,数据库被复制到用户Local / AppData文件夹。 如果安装该程序的用户是pipe理员用户,则此工作正常。 但是,如果一个标准用户试图安装程序,安装程序要求inputpipe理员密码(因为标准用户不能在Windows上安装程序)并且正在安装用户,现在正在切换到pipe理员,导致安装数据库pipe理员Local / AppData文件夹,而不是实际的用户AppData文件夹。 所以,实际上,当标准用户试图运行程序时,找不到数据库。 我不知道如何处理这种情况(最好的做法,如果有的话),并不能find答案。 安装程序是否应该将数据库放到公共场所,比如AllUsers,并且首先将数据库从那里复制到他们自己的AppData文件夹中? 所有用户文件夹的问题似乎是任何人都可以偷看它,并可能删除文件。

非标准的窗口与Qt

是否有可能用Qt创build一个非标准的窗口? 我的意思是我想要创build一个具有圆angular窗口和button类似水色效果的应用程序。 主要的是,该应用程序必须是美丽的,不符合任何Windows或Mac GUI参考… Qt可以做这些事情,或者是最好使用另一个工具包?

是否可以忽略UnMapViewOFFile()的错误487(ERROR_INVALID_ADDRESS)?

下午好,我们正在尝试构build一个由Windows和Linux 32位应用程序使用的内存映射文件caching程序的原型。 每当我们运行原型时,当我们尝试调用UnMapViewOfFile来取消映射一个caching的内存映射文件区域时,我们会得到一个错误487(错误无效地址)。 我们认为这是因为我们试图取消映射前一个未映射的区域。 我们想知道是否可以忽略这个错误信息。 我们尽量确保每次调用MapViewOfFile都通过一个UnMapViewOfFile进行匹配,每次调用MapViewOfFile时,我们使用下面的代码: std::deque<Range> ranges_type; std::multimap<char *,Range> mmultimap; MapPtr = (char*)::MapViewOfFile(hMapping, FILE_MAP_WRITE | FILE_MAP_READ, 0, baseoff, mappedlength); if (MapPtr == 0){ DWORD lasterr = GetLastError(); ErrorMessage(lasterr); } ranges_type.insert(RangeDeque::value_type( PreviousNCopy, PreviousN, adjustedptr + n, MapPtr, TimeStamp, mappedlength)); mmultimap.insert(RangeMultiMap::value_type( MapPtr, Range(PreviousNCopy, PreviousN, adjustedptr + n, MapPtr, TimeStamp, mappedlength))); 每次我们取消映射内存映射文件区域时,我们使用以下摘录: typedef std::multimap<char *,Range>::const_iterator I; numerased […]

Visual C ++ – 重写从DLL导入的函数?

我想覆盖kernel32.dll中的特定function。 是否有可能在静态库中重新定义该函数,并强制执行该静态库中的可执行文件? 我想不同的联系可能会成为一个问题。 这将是可以用我自己的自定义DLL覆盖它。 然而,问题是DLL本身需要链接到kernel32.dll,所以它忽略了我对该函数的定义。 编辑:我得到它与我自己的DLL工作。 在构build时,链接时间码生成需要被禁用。 那么静态链接重写的函数呢?