我创建在Vista上的appcation,其中包括一个服务,并在相同的用户帐户运行IPC在Vista(服务和应用程序)
在服务我创建了该事件的事件,并等待一个控制台应用程序。无论是。在控制台应用程序中,我打开相同的事件(问题从此处开始),并调用SetEvent函数。我无法在控制台应用程序中打开事件(获取错误5,Access被拒绝)。我在网络中搜索并看到了关于完整性级别的一些信息(我不确定问题与完整性级别有关)。它告诉服务并且应用得到不同的完整性水平。
这里是代码,其中IPC occures
服务
DWORD
WINAPI IpcThread(LPVOID lpParam)
{
HANDLE ghRequestEvent = NULL ;
ghRequestEvent = CreateEvent(NULL, FALSE,
FALSE, "Global\\Event1") ; //creating the event
if(NULL == ghRequestEvent)
{
//error
}
while(1)
{
WaitForSingleObject(ghRequestEvent, INFINITE) //waiting for the event
//here some action related to event
}
}
控制台应用程序
在这里,在应用程序的一部分,打开该事件并塞汀事件
unsigned int
event_notification()
{
HANDLE ghRequestEvent = NULL ;
ghRequestEvent = OpenEvent(SYNCHRONIZE|EVENT_MODIFY_STATE, FALSE, "Global\\Event1") ;
if(NULL == ghRequestEvent)
{
//error
}
SetEvent(ghRequestEvent) ;
}
我正在运行具有管理特权的应用程序(serivce和控制台应用程序)(我以管理员身份登录并通过右键单击并使用“以管理员身份运行”选项运行控制台应用程序)。
我在控制台应用程序(我打开该事件)中收到的错误是错误否5(访问被拒绝。)。
所以,如果你告诉怎么做IPC服务,在Vista应用程序之间预先
感谢
Navaneeth
我可以作为同一用户运行。 – Navaneeth 2008-09-22 10:00:44
从哪里可以得到上面使用的LOW_INTEGRITY_SDDL_SACL_W字符串的描述?我只看到它在示例代码中使用,从未正式定义过。 – Clay 2008-11-09 14:22:23