2012-05-22 29 views
0

我試圖使用微軟公用日誌文件系統(CLFS)API。我的代碼看起來像這樣。公用日誌文件系統API的RegisterManageableLogClient()和「訪問被拒絕」錯誤

CLFS_MGMT_POLICY log_policy; 
CLFS_INFORMATION log_info; 
ULONG info_size = sizeof (log_info); 
ULONGLONG desired_size; 
ULONGLONG resulting_size; 

data->log_handle = CreateLogFile (
    helpers::towstring (data->log_name).c_str(), GENERIC_WRITE, 
    FILE_SHARE_DELETE | FILE_SHARE_WRITE | FILE_SHARE_READ, 0, 
    OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE); 

if (data->log_handle == INVALID_HANDLE_VALUE) 
{ 
    loglog_win32_error (LOG4CPLUS_TEXT ("CreateLogFile()")); 
    goto error; 
} 

if (! RegisterManageableLogClient (data->log_handle, 0)) 
{ 
    loglog_win32_error (LOG4CPLUS_TEXT ("RegisterManageableLogClient()")); 
    goto error; 
} 

CreateLogFile()函數執行罰款,我甚至可以看到.blf文件顯示文件系統上。但RegisterManageableLogClient()返回錯誤並且GetLastError()返回值爲「訪問被拒絕」的值5。此代碼與example on MSDN幾乎完全相同。

我不明白爲什麼電話RegisterManageableLogClient()失敗。

UPDATE:

的問題是缺少GENERIC_READCreateLogFile()

回答

0

問題缺失GENERIC_READCreateLogFile()

0

由於您正在與策略進行交互,我想您需要管理憑據來執行註冊。這就是爲什麼你得到Access_denied。

+0

不,我以管理員身份運行。 – wilx

+0

ACCESS_DENIED可能意味着該東西仍在使用中(http://wikiencyclopedia.net/4.0/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/cdf/src/WCF/Log/System/IO/Log/UnsafeNativeMethods.cs/ 1305376/UnsafeNativeMethods.cs) – mox

相關問題