我编写了一个程序a.exe,它启动了我编写的另一个程序b.exe,使用CreateProcess功能。调用者创建两个管道并将两个管道的写入端传递给CreateProcess作为stdout/stderr句柄以用于子进程。这实际上与CreatingaChildProcesswithRedirectedInputandOutput相同MSDN上的示例确实如此。因为它似乎无法使用等待进程退出的同步调用或stdout或stderr上的数据可用(WaitForMultipleObjects函数不在管道上工作),调用者有两个线程正在运行,它们都执行(阻塞)ReadFile调用stdout/stde
我正在编写一个必须处理智能卡读卡器的Windows服务。很多时候,当我尝试连接到插入的智能卡时,SCardConnect()失败并返回SCARD_E_SHARING_VIOLATION,这基本上意味着:Thesmartcardcannotbeaccessedbecauseofotheroutstandingconnections.很公平。我猜至少有一个其他进程试图同时访问Smart。但是有没有办法确定它是哪个进程? 最佳答案 在你的地方我会尝试使用ProcessExplorer如果您访问智能卡读卡器,查看您的应用程序打开的文件句柄。
我正在收集有关正在运行的进程的信息(例如CPU和RAM使用情况)。现在我想通过进程的PID或进程名称获取进程的版本号。我该怎么做? 最佳答案 版本号假设您确定了PID后面的exe及其路径(以便调用FileGetVersion())。Thisthread讨论如何做到这一点,并提出followingscript:#include$aProcListEx=_ProcessListEx()$yourExe="jqs.exe"If@errorThenMsgBox(48,"_ProcessListEx-Error",StringFormat("
我正在编写一个Windows服务来处理由我无法控制的另一个进程创建的文件。这些文件可能非常大(数百兆字节)。我需要处理文件,然后在创建文件后将其删除。所有文件都将写入特定目录(据我所知只是一个直接的文件副本),因此我可以定期迭代该目录中的文件,处理它们然后删除它们。我担心的是,如果我的服务在写入大文件期间查询目录会发生什么情况?该文件会出现在我的服务中吗?它会被锁定以便我无法获得读取权限吗?我是否需要执行任何特殊操作来检查文件是否已完成复制,或者我是否可以只查询File.Exists()或尝试使用FileAccess.Read打开它。Windows如何标记正在复制的文件?
Windows进程是否有任何方法可以阻止另一个进程打印?基本上,我们正在努力削减办公室的成本,我们想阻止人们打印他们的电子邮件。所以有人问我是否可以编写一个程序来阻止或取消来自Outlook的任何打印作业。可以使用任何语言或API的解决方案,只要可行。我们有WinXP和Win7用户。 最佳答案 在Windows上确实没有执行此操作的好方法。此外,这似乎不是技术问题。每月只为打印机提供一令纸。让大家知道纸张供应有限。明显的变通办法是用户自带论文,但这会大大降低运营成本,所以这不是真正的问题。
我的COM组件实现为代理dll。我通过调用CoCreateInstanceEx()创建了一个,但它是在共享的dllhost.exe进程中启动的。有没有办法在单独的dllhost进程中启动我的COM组件? 最佳答案 代理分享是documentedhere.仅当AppId匹配时才会共享。给你一个独一无二的。 关于windows-如何在单独的dllhost进程中启动COM服务器?,我们在StackOverflow上找到一个类似的问题: https://stackov
如何判断(使用非CLRC++)给定的运行进程(通过ID)使用了哪些DLL?带有这些DLL和EXE的文件系统路径。提前谢谢你。 最佳答案 如果您尝试在代码中执行此操作,您可能正在寻找EnumProcessModules函数(或K32EnumProcessModules,具体取决于操作系统。有关详细信息,请参阅链接)。EnumProcessModulesEx可以为您提供更多信息。简单地给它一个你想知道加载了哪些模块(DLL)的进程的句柄。如果您不知道句柄,可以使用EnumProcesses找到它,如果您知道PID,则可以使用OpenPr
我想知道您如何使用批处理文件检查是否有多个运行的可执行文件实例,我查看了“任务列表”,但似乎没有执行此操作的选项。E.g.iftest.exeisrunningx2echoprogramisrunningtwiceelseoneoflessinstanceofprogramrunning 最佳答案 wmic和find实用程序的组合似乎可以解决问题:wmicprocesswherename="test.exe"|find"test.exe"/c首先我们列出名称为“test.exe”的所有进程,然后使用find.exe实用程序计算这些行
我在尝试终止进程时遇到了一些麻烦,我意识到仅此站点上就有相当多的资源,但我想知道是否有其他终止应用程序的方法,而不是一些典型的方法,例如:Process[]procs=Process.GetProcessesByName("test");foreach(Processprocinprocs)proc.Kill(); 最佳答案 有Process.CloseMainWindow,它很好地要求进程退出(与Process.Kill相反,它会停止进程并可能产生负面影响)。 关于c#-在C#中终止正
问题:我在同一LAN中的不同PC(操作系统:WindowsXP、Windows7)上运行同一C#应用程序的多个实例。我必须在他们之间共享一些配置数据。每个进程都必须具有对数据的读写访问权限。我的雇主坚持将这些共享数据存储在一个文件中,该文件位于其中一台PC的共享目录中。可能的解决方案:Exclusivefileopening:数据存储在TXT文件中(二进制文件的序列化也是一种选择)。每个进程在尝试打开文件时都使用File.Open和FileShare.None。获取IOException意味着该文件已在使用中,因此进程必须waitandtryagainlater.SQLServerCE