Articles of 进程

MSI安装程序,64位操作系统,写入\ windows \ system32 \ inetsrv文件夹

在Windows Server 2008 64位上,我需要一个.msi安装程序文件将一些文件写入\ windows \ system32 \ inetsrv文件夹。 (这些文件是一些XML Schemavalidation文件,C#XmlReaderSettings.Schema.Add()希望在该文件夹中)。 安装程序运行时,文件最终在\ windows \ SysWOW64 \ inetsrv文件夹中,而不是它们需要的位置。 我试图让安装程序写入\ windows \ Sysnative文件夹,然后安装程序创build了一个具有确切名称的文件夹,我没想到这是可能的。 看到这个页面有关抑制SysWOW64redirect的一个很好的讨论。 我应该如何让.msi将我的文件写入Windows 2008 64位的\ windows \ system32 \ inetsrv文件夹中?

C ++监视后台运行进程?

我一直在试图用C ++编写一个程序来监视正在运行的进程,并在检测到正在运行的时候终止某个程序。 我已经写了一个程序,但是我唯一能想到的方法是使用一个无限的WHILE循环来检查程序。 正如你所能想象的那样,这一直使用CPU的能力和资源来不断循环。 在任务pipe理器中,您可以看到大多数正在运行的进程始终使用CPU的0%。 我的问题是:如何编写或修改这个程序在后台运行,利用0%的CPU,直到检测到它应该终止的进程? 我的整个计划在下面。 在这个例子中,我使用WinMain中的“Notepad.exe”作为程序应该终止的进程。 #include <Windows.h> #include <iostream> #include <tlhelp32.h> #include <string> #define TA_FAILED 0 #define TA_SUCCESS_CLEAN 1 #define TA_SUCCESS_KILL 2 DWORD WINAPI TerminateApp(DWORD dwPID, DWORD dwTimeout); DWORD WINAPI Terminate16App(DWORD dwPID, DWORD dwThread, WORD w16Task, DWORD dwTimeout); typedef struct { DWORD dwID; DWORD dwThread; } TERMINFO; BOOL CALLBACK TerminateAppEnum( HWND hwnd, […]

64位.Net应用程序中的内存限制?

在我的笔记本电脑上,运行64位Windows 7和2 GB可用内存(由任务pipe理器报告),我能够做到: var x = new Dictionary<Guid, decimal>( 30 * 1024 *1024 ); 没有更多的RAM在我手中的计算机,我想知道这是否会扩大,以便在具有4 GB可用内存的计算机上,我将能够分配60M项目而不是“只是”30M等等? 还是有其他的限制(.Net和/或Windows),我会碰到之前,我能够消耗所有可用的RAM? 更新:好的,所以我不能分配一个大于2GB的单个对象。 知道这一点很重要! 但是,我当然好奇地想知道,如果能够像这样分配2 Gb的块,我能够充分利用所有的内存: var x = new List<Dictionary<Guid, decimal>>(); for ( var i = 0 ; i < 10 ; i++ ) x.Add( new Dictionary<Guid, decimal>( 30 * 1024 *1024 ) ); 如果电脑具有> 20Gb的可用内存,这是否工作?

CreateProcess()错误

STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); memset(&pi, 0, sizeof(pi)); si.cb = sizeof(si); LPCWSTR procName =(LPCWSTR)"D:\\test dir 1\\Calc.exe"; LPWSTR procArg =(LPWSTR)"blacknull"; if(CreateProcess(procName,procArg,0,0,0,CREATE_DEFAULT_ERROR_MODE,0,0,&si,&pi)) { //do some work } printf( "CreateProcess failed (%d).\n", GetLastError()); system("Pause"); 它一直抛出错误(2) – > The System cannot find the file specified 。 我不知道什么是错的。 我也试图使用在同一个目录中的“Calc.exe”。 但它不工作。

如何确定一个System.Diagnostics.Process是32位还是64位?

我试过了: process.MainModule.FileName.Contains("x86") 但它引发了一个x64进程的exception: Win32Exception:只有ReadProcessMemory或WriteProcessMemory请求的一部分完成

如何从32位WOW进程获取Program Files文件夹path(不是Program Files(x86))?

我需要从32位WOW进程获取本地(而不是WOW)程序文件目录的path。 当我将CSIDL_PROGRAM_FILES(或CSIDL_PROGRAM_FILESX86)传递到SHGetSpecialFolderPath时,它将返回WOW(Program Files(x86))文件夹path。 如果可能的话,我宁愿避免使用环境variables。 我想比较一下从registry中读取的一些值,如果这些值指向我的应用程序的WOW或本地版本的path,那么我的代码会执行某些操作,如果没有,则会执行其他操作。 要找出我的应用程序的本地和WOW版本的预期,我需要得到的path“程序文件(x86)”和“程序文件”。

有没有一种方法来识别Windows命令提示符而不pipe文件名或位置?

我正在编写一个程序,以便在用户运行命令提示符时立即跟踪和终止(如果可能,则使用regedit)。 这是为了阻止用户运行我宁愿他们没有的命令。 我已经编写了一些代码,用于查看进程何时启动,并使用QueryFullProcessImageName检查其名称。 问题是,如果有人要重命名命令提示符,那么我不能再通过进程名称检测到它。 我检测命令提示符的方式目前是“\ cmd.exe”,但显然这不是很安全。 下面发布是我的代码。 为了简洁,我删除了所有错误检查。 请让我知道,如果你需要更清晰。 谢谢! TCHAR exeName[MAX_PATH]; DWORD exeNameSize = MAX_PATH; //the pid comes into the function as a parameter HANDLE handle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, 0, pid); if (handle) { if (QueryFullProcessImageName(handle, 0, exeName, &exeNameSize)) { tstring name = exeName; /* badProcs would contain the path identifiers such as "\\cmd.exe" or […]

如何使用pid从Python中终止进程?

我想在Python中写一些简短的脚本,如果不是已经开始其他的terminal和应用程序(Linux),将启动子stream程中的另一个Python代码。 所以它看起来像: #!/usr/bin/python from subprocess import Popen text_file = open(".proc", "rb") dat = text_file.read() text_file.close() def do(dat): text_file = open(".proc", "w") p = None if dat == "x" : p = Popen('python StripCore.py', shell=True) text_file.write( str( p.pid ) ) else : text_file.write( "x" ) p = # Assign process by pid / pid from int( […]