![](/img/trans.png)
[英]LogonUser Lib “advapi32.dll” strange on non domain cpu when local account exists?
[英]Declare OpenEventLog() in Lib advapi32.dll as Integer or Long?
對於我的應用程序,只有Long可以同時在W2K8R2和W2K12上使用。
我有一個使用三個調用保存NT事件日志的現有應用程序:
Declare
FunctionOpenEventLog Lib"advapi32.dll"Alias"OpenEventLogA"(ByValServerName AsString, ByValSourceName AsString) AsInteger
Declare
FunctionBackupEventLog Lib"advapi32.dll"Alias"BackupEventLogA"(ByValEventLogHandle AsInteger, ByValBackupFileName AsString) AsBoolean
Declare
FunctionCloseEventLog Lib"advapi32.dll"(ByValEventLogHandle AsInteger) AsBoolean
在VS 2012中構建應用程序后,該代碼在小型測試應用程序中時,可以在Windows Server 2008R2和Windows Server 2012上正常運行。
我繼承了一個大型應用程序,其中也包含上述聲明。 在大型應用程序中可以應用許多設置-我只是想了解VB。 該應用程序在Windows Server 2008 R2上運行良好,但是在Windows Server 2012上,OpenEventLog()返回的句柄不正確-當傳遞給BackupEventLog()時,導致句柄錯誤。 該句柄是一個很大的負數,因此我嘗試在上述聲明中聲明“ Handle”參數並返回值“ As Long”而不是“ As Integer”。 大型VB應用程序現在可以在W2K8和W2K12上運行。
這有點令人擔憂,因為這不是預期的行為(從我的角度來看),這意味着我們需要在所有受支持的Windows版本上全面測試所有功能。
哪個聲明是正確的-“作為整數”還是“盡可能長”?
有沒有更好的方法編寫此代碼?
是否有“ As Handle”方式對此進行編碼?
由於小型獨立測試應用程序使用“ As Integer”,並且可以在W2k8R2和W2K12上運行,因此是否存在引起問題的項目設置?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.