WEB开发网
开发学院操作系统Windows Vista Windows Vista IE 7保护模式开发者生存指南 阅读

Windows Vista IE 7保护模式开发者生存指南

 2008-08-22 17:24:11 来源:WEB开发网   
核心提示: 在我们的示例程序中,使用了两个mutex,Windows Vista IE 7保护模式开发者生存指南(8),目的是允许插件判别何时程序在运行,当DemoApp程序启动时会创建这两个mutex,示例中的插件不能通过创建一个文件映射对象,来启动一个单独的进程(CreateProcess()中的

在我们的示例程序中,使用了两个mutex,目的是允许插件判别何时程序在运行,当DemoApp程序启动时会创建这两个mutex,当点击其中一个Open Mutex按钮时,插件会试图打开它们。Mutex 1具有默认完整性级别,而Mutex 2被SetObjectToLowIntegrity()设为低完整性级别,这意味着一旦处于保护模式,插件将只能访问Mutex 2,下面是点击Open Mutex按钮之后的程序输出:

Windows Vista IE 7保护模式开发者生存指南

保护模式的另一个作用是插件不能启动一个继承自内核对象句柄的单独进程,例如,处于保护模式时,示例中的插件不能通过创建一个文件映射对象,来启动一个单独的进程(CreateProcess()中的参数bInheritHandles为TRUE),且使这个进程继承了文件映射对象的句柄。

HANDLE hMapping;
SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES) };
  
sa.bInheritHandle = TRUE;
  
hMapping = CreateFileMapping( INVALID_HANDLE_VALUE, &sa,
                PAGE_READWRITE, 0, cbyData, NULL );
  
//在此可把数据放在共享内存块中
  
//运行EXE并传递给它共享内存句柄
CString sCommandLine;
BOOL bSuccess;
STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi = {0};
  
sCommandLine.Format( _T(""C:path  oDemoApp.exe" /h:%p"),
            hMapping );
  
bSuccess = CreateProcess(
        NULL, sCommandLine.GetBuffer(0), NULL, NULL,
        TRUE,// TRUE代表新的进程应该继承句柄
        NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi );

上一页  3 4 5 6 7 8 9 10  下一页

Tags:Windows Vista IE

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接