【求助】c#更改Internet设置的问题

bychahaha 2012-03-27 01:08:16
利用 wininet.dll 中的 InternetSetOption 以及 注册表 来更改Internet设置

遇到了问题,

代码见下,一共有两个函数,一个是设置代理,另一个是撤销代理

遇到的问题是,有时设置无法更改。

我加入了三个消息对话框监控注册表状态,

发现在设置代理时,第二个消息显示注册表被更改,而进行InternetSetOption之后,注册表又被重置。
这是怎么回事?

另外想问下InternetSetOption该怎么用?




public void SetIEProxy(string proxy)
{
//打开注册表
RegistryKey regKey = Registry.CurrentUser;
string SubKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";

MessageBox.Show(Regedit.Instance().GetRegistData(SubKeyPath, "ProxyEnable"));

RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath, true);

//更改健值,设置代理,
{
optionKey.SetValue("ProxyEnable", 1);
optionKey.SetValue("ProxyServer", proxy);
MessageBox.Show(Regedit.Instance().GetRegistData(SubKeyPath, "ProxyEnable"));
// optionKey.Close();
}
// regKey.Close();


//激活代理设置
InternetSetOption(0, 39, IntPtr.Zero, 0);
InternetSetOption(0, 37, IntPtr.Zero, 0);
MessageBox.Show(Regedit.Instance().GetRegistData(SubKeyPath, "ProxyEnable"));
}
...全文
76 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bychahaha 2012-03-27
  • 打赏
  • 举报
回复
好吧,我解决了。

是我原来找的版本的API定义错了。坑爹啊。

[DllImport(@"wininet", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "InternetSetOption", CallingConvention = CallingConvention.StdCall)]
public static extern bool InternetSetOption
(
IntPtr hInternet,
int dmOption,
IntPtr lpBuffer,
int dwBufferLength
);

这个是正确的版本。

真坑爹。


[Quote=引用 1 楼 fengyarongaa 的回复:]

http://q.cnblogs.com/q/1571/
参考
[/Quote]
bychahaha 2012-03-27
  • 打赏
  • 举报
回复
难道csdn没人能搞过internetSeting API吗?不可能啊。难道不该发这里?
bychahaha 2012-03-27
  • 打赏
  • 举报
回复
谢谢,出问题的是这个东西。

不过您的这个帖子跟我这里贴出的相比,没有多少新东西。

哪能找到 InternetSetOption的详细介绍呢?

[Quote=引用 1 楼 fengyarongaa 的回复:]

http://q.cnblogs.com/q/1571/
参考
[/Quote]
ycproc 2012-03-27
  • 打赏
  • 举报
回复

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧