Articles of 进程

如何从C#启动windows“运行”对话框

我想在我的C#代码中从Windows启动运行对话框(Windows + R)。 我认为这可以使用explorer.exe来完成,但我不知道如何。

如何在x64上为我的进程启用alignment例外?

我很好奇,看看我的64位应用程序是否存在alignment错误。 从IPF,x86和x64上的Windows数据alignment : 在Windows中,生成alignment错误的应用程序将引发exceptionEXCEPTION_DATATYPE_MISALIGNMENT 。 在x64体系结构中 ,默认情况下,alignment例外是禁用的,而修复由硬件完成。 应用程序可以通过设置一对寄存器位来启用alignmentexception ,在这种情况下,除非用户操作系统用SEM_NOALIGNMENTFAULTEXCEPT屏蔽exception,否则将引发exception。 (有关详细信息,请参阅“ AMD体系结构程序员手册”卷2:系统编程。 ) [编者按: 强调我的] 在x86体系结构上 ,操作系统不会使alignment错误对应用程序可见。 在这两个平台上,alignment错误也会出现性能下降,但是与Itanium相比,性能会降低很多,因为硬件会使多次访问内存来检索未alignment的数据。 在Itanium上 ,默认情况下,操作系统(OS)会使此例外对应用程序可见,并且在这些情况下终止处理程序可能会有用。 如果你没有设置处理程序,那么你的程序将挂起或崩溃。 在清单3中,我们提供了一个示例,显示如何捕获EXCEPTION_DATATYPE_MISALIGNMENTexception。 忽略了查阅“ AMD体系结构程序员手册”的方向,我将参考“ 英特尔64和IA-32体系结构软件开发人员手册” 5.10.5检查alignment 当CPL为3时,可以通过设置CR0寄存器中的AM标志和EFLAGS寄存器中的AC标志来检查内存引用的alignment情况。 未alignment的内存引用会生成alignmentexception(#AC)。 在特权级别0,1或2下运行时,处理器不会产生alignmentexception。请参阅表6-7,了解启用alignment检查时alignment要求的说明。 优秀。 我不确定那是什么意思,但很好。 那么还有: 2.5控制寄存器 控制寄存器(CR0,CR1,CR2,CR3和CR4;见图2-6)确定处理器的工作模式和当前正在执行的任务的特性。 这些寄存器在所有32位模式和兼容模式下均为32位。 在64位模式下,控制寄存器扩展到64位。 MOV CRn指令用于操作寄存器位。 这些指令的操作数前缀被忽略。 控制寄存器总结如下,并且这些控制寄存器中的每个架构定义的控制字段都是单独描述的。 在图2-6中,64位模式下的寄存器宽度用括号表示(CR0除外)。 – CR0 – 包含控制处理器工作模式和状态的系统控制标志 上午 校准掩码(CR0的第18位) – 设置时启用自动校准检查; 清除时禁用alignment检查。 只有当AM标志置位,EFLAGS寄存器中的AC标志置位,CPL为3,处理器工作在受保护模式或虚拟8086模式时,才进行alignment检查。 我试过了 我实际使用的语言是delphi,但假装它是语言不可知的伪代码: void UnmaskAlignmentExceptions() { […]

WINSDK:确定一个任意的pid是否标识Windows上正在运行的进程

试图执行一个穷人的testing过程是否仍在运行(本质上相当于微不足道的kill(pid, 0) 。 希望能够简单地调用OpenProcess一些最小的期望访问,然后testingGetLastError() == ERROR_INVALID_PARAMETER或GetExitCodeProcess(…) != STILL_ACTIVE 。 不错的尝试…在Windows XP上以pipe理员身份运行: HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); if (!hProc) { DWORD dwLastError = GetLastError(); } …当pid由不同的(不是SYSTEM)用户拥有时, dwLastError == ERROR_ACCESS_DENIED失败。 而且,如果pid最初由不同的用户拥有,但是自此终止,则OpenProcess也会因为ERROR_ACCESS_DENIED (而不是ERROR_INVALID_PARAMETER )而失败。 我必须使用Process32First / Process32Next或EnumProcesses吗? 我绝对不想使用SeDebugPrivilege 。 谢谢,V

在WIX中禁用WIN64DUALFOLDERSreplace

我有一个链接2 msi的设置 安装我的产品的x86 / x64 MSI。 一个部署第三方工具包的x86 MSI 我希望第二个MSI使用相同的安装目录,以便MSI 1将用户select的目录存储在MSI 2随后读取并用作其目标的registry中。 精细和花花公子 – 如果我安装微星1到C:\testing\没有问题 – 微星2拿起它,并把工具包放入该文件夹。 当我安装到c:\ Program Files文件时,然后MSI 2得到了一些聪明的答案,并决定我必须指出C:\ Program Files(x86),并把工具放在那里 – 有点混乱。 它logging下来的时候: Action start 16:53:59: AppSearch. MSI (c) (2C:44) [16:53:59:521]: Note: 1: 2262 2: Signature 3: -2147287038 MSI (c) (2C:44) [16:53:59:521]: WIN64DUALFOLDERS: 'C:\Program Files (x86)\' will substitute 17 characters in 'C:\Program Files\Manufacturer\Product' […]

终止进程树(C for Windows)

这已经被问过,但我无法find一个明确的答案,在代码中。 我打开一个进程ProcessA(带有PID 1234)。 这个过程打开一个subprocessProcessAB(PID 5678)。 完成之后,我终止了ProcessA,但我仍然有ProcessAB的挥之不去。 我如何终止整个过程树? 我的意思是,我如何确定如果我终止了我打开的进程,我也终止了所有相关的进程? 谢谢 代码表示赞赏。

为Windows x64预编译的SQLite二进制文件

是否有SQLite的Windows 64位预编译的二进制文件? 到目前为止,我无法find这样的 谢谢。

Python:Howto启动一个完整的进程而不是subprocess并检索PID

我想要: 从我的进程(myexe.exe arg0)启动一个新进程(myexe.exe arg1) 检索这个新进程的PID(os窗口) 当我用TaskManager的Windows命令“结束进程树”杀死我的第一个实体(myexe.exe arg0)时,我需要新的(myexe.exe arg1)不会被杀死… 我玩过subprocess.Popen,os.exec,os.spawn,os.system …没有成功。 解决问题的另一种方法:如果有人杀死myexe.exe(arg0)的“进程树”,如何保护myexe.exe(arg1)? 编辑:同样的问题(没有答案)在这里 编辑:下面的命令不保证subprocess的独立性 subprocess.Popen(["myexe.exe",arg[1]],creationflags = DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP,close_fds = True)

在<4GB RAM的64位虚拟机上Java中的对象头大小

我想知道是否有某种方法让64位虚拟机使用8字节对象头而不是12字节对象头,如果JVM的可用RAM是4GB的话。 还是这样在Linux上,如果不是在Windows上? 有人可以testing这个代码? import java.lang.reflect.Field; import sun.misc.Unsafe; public class ObjectSizes { String s1; String s2; public static void main(String[] args) throws Exception { Unsafe unsafe; try { Field field = Unsafe.class.getDeclaredField("theUnsafe"); field.setAccessible(true); unsafe = (Unsafe)field.get(null); } catch (Exception ex) { throw new RuntimeException("Can't get Unsafe instance.", ex); } Field s1Field = ObjectSizes.class.getDeclaredField("s1"); Field s2Field = […]

如何在Windows中为进程分配超过2GB的内存?

我正在运行一个程序来构build一个非常大的对象,我将从这个过程中分配超过2GB的内存而获益匪浅。 提前致谢。

如何等待非subprocess退出

对于subprocess,可以使用wait()和waitpid()函数暂停当前进程的执行,直到subprocess退出。 但是这个函数不能用于非subprocess。 是否还有另一个function,可以等待任何进程退出?