- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个控制台应用程序,该应用程序将为名为 Client.exe 的主应用程序创建防火墙异常(exception),该应用程序通过 FTP 将一些文档上传到我们的服务器。我从Delphi 7 Windows Vista/7 Firewall Exception Network Locations借用了RRUZ代码我的代码如下所示:
program ChangeFW;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
ComObj;
var
ExecName: string;
procedure AddExceptionToFirewall(Const Caption, Executable: String);
const
NET_FW_PROFILE2_DOMAIN = 1;
NET_FW_PROFILE2_PRIVATE = 2;
NET_FW_PROFILE2_PUBLIC = 4;
NET_FW_IP_PROTOCOL_TCP = 6;
NET_FW_ACTION_ALLOW = 1;
var
fwPolicy2 : OleVariant;
RulesObject : OleVariant;
Profile : Integer;
NewRule : OleVariant;
begin
Profile := NET_FW_PROFILE2_PRIVATE OR NET_FW_PROFILE2_PUBLIC;
fwPolicy2 := CreateOleObject('HNetCfg.FwPolicy2');
RulesObject := fwPolicy2.Rules;
NewRule := CreateOleObject('HNetCfg.FWRule');
NewRule.Name := Caption;
NewRule.Description := Caption;
NewRule.Applicationname := Executable;
NewRule.Protocol := NET_FW_IP_PROTOCOL_TCP;
NewRule.Enabled := TRUE;
NewRule.Profiles := Profile;
NewRule.Action := NET_FW_ACTION_ALLOW;
RulesObject.Add(NewRule);
end;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
ExecName := GetCurrentDir + '\' + 'Client.exe';
AddExceptionToFirewall('SIP Inventory',ExecName);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
当我执行该应用程序时,我收到以下错误消息:EOIeSysError:Coinitialize尚未被调用,ProgID:“HNetCfg.FwPolicy2”知道我做错了什么吗?你能指出我正确的方向吗?非常感谢。
最佳答案
如果您想使用 COM 对象,您必须使用相应的 CoUninitialize 调用 CoInitialize。
在通常的应用程序中,这已经完成了。
只要您的程序是控制台程序,您就必须自己调用它。
.....
CoInitialize(nil);
try
try
{ TODO -oUser -cConsole Main : Insert code here }
ExecName := GetCurrentDir + '\' + 'Client.exe';
AddExceptionToFirewall('SIP Inventory',ExecName);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
finally
CoUninitialize;
end;
.....
关于delphi - Coinitialize 尚未被调用错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16469182/
我正在尝试在线程中使用 COM 接口(interface)。根据我所读到的内容,我必须在每个线程中调用 CoInitialize/CoUninitialize 。 虽然这工作正常: procedure
我正在编写一个控制台应用程序,该应用程序将为名为 Client.exe 的主应用程序创建防火墙异常(exception),该应用程序通过 FTP 将一些文档上传到我们的服务器。我从Delphi 7 W
我正在 Delphi XE2 中构建一个多线程 Windows 服务应用程序,它使用 ADO 数据库组件连接到 SQL Server。我用过CoInitialize(nil);在内部线程之前很多次,但
假设我的应用程序在启动时调用 CoInitialize,并在存在之前调用 CoUninitialize。 假设我的应用程序使用了一个第三方组件并执行类似的操作,这会导致某种失败吗? 当调用已经提交时,
假设我的应用程序在启动时调用 CoInitialize,并在存在之前调用 CoUninitialize。 假设我的应用程序使用了一个第三方组件并执行类似的操作,这会导致某种失败吗? 当 CoIniti
这是我的 ThorDetectorSwitch.cpp 文件构造函数的 C++ 代码: ThorDetectorSwitch::ThorDetectorSwitch() : _mcSwitch(__u
自创建以来已经有 16 年了,我仍然不知道为什么 CoInitialize 中有一个保留参数。方法。有谁知道(或能够做出明智的猜测)添加此参数的原因以及预期用途是什么? 最佳答案 这实际上不是为了将来
我使用 UniDac 组件连接到 PostgreSQL。我的查询正在单独的线程中运行。现在,当我在线程中使用 CoInitialize 时,我收到以下编译器错误: - [DCC Error] QryT
在具有ADO数据库连接的多线程环境中,我想知道CoInitialize是否已被调用。我该如何检查这个? 最佳答案 通常情况下,您不应该执行此检查,而只需调用 CoInitialize/CoUnInit
下面的代码,源自https://learn.microsoft.com/en-us/windows/desktop/shell/folder-info#determining-an-objects-p
我有一个 .NET 应用程序,它使用 COM Interop 使用 COM 组件,组件实例化自身,接口(interface)指针在 API cal 中返回到 .net 包装器,稍后在应用程序流程中进行
我在 Delphi 程序的线程内使用 TIdHttp 和 TXMLDocument。现在我想知道: 这些类是否使用 COM 对象,因此我需要在此线程中调用 CoInitialize 和 CoUnini
onecore\com\combase\objact\objact.cxx(812)\combase.dll!00007FF8BD322169: (caller: 00007FF8BD320F78)
我正在学习 Python 中的多线程。我正在查看在线示例,并尝试为远程连接到远程计算机的 WMI 模块尝试多线程。但是,当我使用pythoncom.CoInitialize()时,它给我一个错误,指出
-我的问题 我得到 CoInitialize has not been called exption. -我的项目结构 这是我的问题。我有一个用 C# 开发的 COM dll,MCLWrapper.d
为了学习多线程,我在 COM 线程 (TRemoteDataModule) 中创建了一个线程。 这是我的组件工厂: TComponentFactory.Create(ComServer, TServe
我正在开发一个 UI 应用程序,它会一路创建一个 COM 对象。 问题是,我想将这个 COM 对象完全“移动”到另一个线程上。 我要做的是: 创建我想将对象移动到的新线程(使用 CreateThrea
我有一个 XE2 DataSnap 服务器(Windows 服务),它在其方法中使用第 3 方进程外 COM 组件。作为 COM,我知道它需要在语句周围使用 CoInitializeEx 和 CoUn
我有一个使用 C++ DLL 的 C# Windows 窗体应用程序。在 DLL 中,我初始化 COM: auto hResult = CoInitialize(NULL); // Initializ
COM是否需要初始化才能使用SysAllocString、SysFreeString等BSTR处理函数? MSDN 说 You need to initialize the COM library o
我是一名优秀的程序员,十分优秀!