我試圖使用微軟公用日誌文件系統(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_READ
爲CreateLogFile()
。
不,我以管理員身份運行。 – wilx
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