Articles of 进程

通过在Windows XP x64上使用JScript执行.hta文件,“访问被拒绝”

我有一个简单的HTML(如HTA)应用程序,在Windows XP x64机器上显示奇怪的行为。 我定期(不是每次)错误消息“访问被拒绝”。 当我启动应用程序。 在Windows XP 32bit的相同的应用程序运行得很好… 有人有任何想法或解释? 错误信息: 线路:18 Char:6 错误:访问被拒绝。 代码:0 URL:file:/// D:/test_j.hta 这是我的“test_j.hta”的代码: <html> <head> <title>Test J</title> <HTA:APPLICATION ID="objTestJ" APPLICATIONNAME="TestJ" SCROLL="no" SINGLEINSTANCE="yes" WINDOWSTATE="normal" > <script language="JScript"> function main() { //window.alert("test"); window.resizeTo(500, 300); } function OnExit() { window.close(); } </script> </head> <body onload="main()"> <input type="button" value="Exit" name="Exit" onClick="OnExit()" title="Exit"> </body> </html>

监视Windows中进程完成的某些系统调用

我希望能够监视某个进程所做的某些系统调用,主要是文件I / O调用。 在Linux上,我可能会用适当的参数使用strace,但是我怎么能在Windows上做到这一点? 我主要感兴趣的是运行一个进程,并找出它已经读取和写入的文件。 编辑:我想从另一个进程编程。 我知道ProcessMonitor,但我想以一种可导入另一个程序的forms接收数据以供进一步分析。 编辑:如果我进一步缩小我的要求,它可能足以能够监视CreateFile()的调用。 我真的只关心打开哪些文件,如果打开它们来读/写或者只读。 另一个我没有真正说明的要求是速度是相当重要的, 我打算做这样的事情,如编译一个C ++文件,并拉起一个完整的graphics用户界面,生成一个20MB的日志文件将有非常高的开销。 编辑:这也不错,如果它不需要pipe理权限。

找不到w3wp进程

我使用Visual Studio 2010在本地机器上debugging一个asp.net MVC项目。 步骤是: 单击debugging,并尝试执行“w3wp.exe”进程。 但是它不在列表中。 我确定点击“在所有会话中显示进程”。

从32位应用程序访问64位registry

我需要在c ++中打开一个registry项"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{26A24AE4-039D-4CA4-87B4-2F86416024FF}" 。 它包含Java 64位应用程序。 该registry项的完整path是"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F86416024FF}" 。 我们可以通过registry来查看这个path。 我用 returnStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{26A24AE4-039D-4CA4-87B4-2F86416024FF}"), 0, KEY_ALL_ACCESS, &hKey) 用于打开registry; 但它返回错误值(2)。 returnStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall")… 返回成功结果。 我能做什么?

64位应用程序和内联汇编

我正在使用Visual C ++ 2010开发32位Windows应用程序。 有一些我真的想要使用内联汇编。 但是我刚刚意识到Visual C ++不支持64位应用程序中的内联汇编。 因此将来移植到64位是一个大问题。 我不知道64位应用程序如何与32位应用程序不同。 将来有没有机会将32位应用程序全部升级到64位? 我听说64位的CPU有更多的寄存器。 由于性能不是我的应用程序的关注,使用这些额外的寄存器不是我所关心的。 还有什么其他的原因,32位应用程序需要升级到64位? 除了64位应用程序可能使用64位CPU专有的寄存器或指令之外,64位应用程序与32位应用程序相比处理事情是否有所不同? 我的应用程序需要与其他操作系统组件进行交互,例如驱动程序,我知道它必须是64位窗口中的64位。 我的32位应用程序是否兼容?

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请求的一部分完成