大家好我正在开发一个Windows程序,其安装需要重新启动explorer.exe。我知道“重新启动计算机以完成安装”是此处的标准方法,但我希望我的安装程序为用户提供仅重新启动资源管理器的选项,以便他们可以立即开始使用我的程序。最好的方法是什么?当然,我可以找到并终止该过程,但这似乎很恶心。是否有一些技巧可以让Explorer认为用户正在注销并干净地关闭?谢谢! 最佳答案 这是MSI安装吗?您是否考虑过使用RestartManager?重启管理器将检测哪些进程正在打开文件/句柄并需要重启,并允许您自动停止/启动这些进程而无需重启。
对于A.EXEPE文件,如果程序以测试模式运行,我想将进程名称更改为“A_TEST.exe”。如果程序以安全模式运行,我想更改为“A_SAFE.exe”文件名必须相同(A.EXE)这可能吗? 最佳答案 如果“进程名称”是显示任务管理器的名称-您只能从ring0更改它。在ring3中,您只能更改默认窗口标题。#includePEB*peb=(PEB*)__readfsdword(0x30);wchar_tnewTitle[]=L"NewTitle";UNICODE_STRINGnewTitleUStr={sizeof(newTitle
在研究了如何从C#中重置我的计算机和/或关闭它之后,我找到了关于如何执行此操作的解释:ManagementBaseObjectoutParameters=null;ManagementClasssysOS=newManagementClass("Win32_OperatingSystem");sysOS.Get();//Enablesrequiredsecurityprivilege.sysOS.Scope.Options.EnablePrivileges=true;//GetourinparametersManagementBaseObjectinParameters=sysOS.G
我将Chrome和IE8视为具有多个进程的应用程序示例,每个进程都与单独的窗口(以及其他事物)相关联。这是如何运作的?特别关注GUI方面-我的一个问题是Windows是否将HWND视为属于一个进程,或者一个进程是否可以任意与任何HWND交互? 最佳答案 Howdoesthiswork?SpecificallyfocusingontheGUIside-onequestionIhaveisdoesWindowstreataHWNDasbelongingtoaprocessorcanoneprocessarbitrarilyinterac
我正在尝试自动执行用C++编写的交互式命令行工具。启动时,二进制文件等待字母S、Q或P(状态、退出或暂停)。它使用非标准的msvcrt函数“getche”来获取击键(而不是例如gets()),而无需用户按回车键。我尝试以标准方式与进程通信(写入标准输入并使用process.communicate[]),但它没有获得输入。在尝试不同的事情几个小时后,我在VisualStudio中创建了两个小示例项目来重现问题并确保我是理智的(大概)。这是用于调用二进制文件的python脚本:importsubprocessimporttimecmd=["test-getch.exe"]process=s
假设如果关闭一个句柄为123456的窗口并打开另一个窗口。Windows能否在极少数情况下将句柄123456分配给新窗口? 最佳答案 无法保证Windows不会立即重新使用句柄。在实践中,所有现存的实现都采取措施尽量避免重复使用句柄。 关于windows-两个窗口上的句柄可以相同吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8864665/
首先,我没有尝试以任何方式与桌面交互。我想做的是分离关注点。我有一个在本地系统帐户(LSA)下运行的服务。有时,我需要在不同的帐户下执行流程。为此,我正在使用System.Diagnostics.Process。到目前为止,这是我尝试过的:将服务应用作为普通桌面应用运行,在同一帐户下启动子进程:有效将服务应用程序作为普通桌面应用程序运行,在另一个帐户下启动子进程:有效将服务作为服务应用程序(作为LSA)运行,在同一帐户(LSA)下启动子进程:有效将服务作为服务应用程序(作为LSA)运行,在另一个帐户下启动子进程:不起作用不适合我的情况会向我抛出一个Win32Exception并显示“拒
我想知道如何使用C++编程在Windows中打开任何应用程序,我正在使用devC++。我使用了system()但它表现不佳或者我没有正确使用它。请告诉我system()的语法来打开一个应用程序或告诉另一个函数。 最佳答案 使用shell执行而不是windows系统。#include//Linkwithlibrary:Shell32.liborlibshell32.aShellExecute(NULL,//handletotheparentwindow"open",//Actiontotake"Notepad.exe",//Progr
我正在使用WinAPI在C++中编写一个控制台多进程应用程序。所以我有Dispatcher(例如“Parent”)和Client(例如“Child”)进程。两个进程都是同步的:它们使用信号量、事件、互斥量和管道(所有这些都是标准的WinAPI句柄)。当用户键入“exit”命令时应用程序停止。如果用户这样做,调度程序进程会通知它的子进程,然后子进程释放其资源并执行另一个退出前程序以正确退出。但是有一件事困扰着我:如果用户按下窗口“关闭”按钮会发生什么?如果是这样,我应该听关闭事件,然后执行我的资源释放过程。处理窗口关闭事件的最简单方法是什么? 最佳答案
给定一个线程的线程ID,我需要找到拥有它的进程的pid。我想通过toolhelp库枚举所有线程并使用THREADENTRY32的“th32OwnerProcessID”成员,但我正在寻找更简单(更短)的方法。我找不到直接的API来执行此操作,也无法在StackOverflow中找到答案。提前致谢。 最佳答案 您需要两个WinAPI函数。使用OpenThread获取线程的句柄|,它以线程ID作为参数。使用GetProcessIdOfThread获取进程ID,它将句柄作为参数。在尝试使用它们之前,您需要阅读有关其使用限制的链接文档。