gpt4 book ai didi

delphi - Coinitialize 尚未被调用错误消息

转载 作者:行者123 更新时间:2023-12-03 15:17:32 29 4
gpt4 key购买 nike

我正在编写一个控制台应用程序,该应用程序将为名为 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com