我創建在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