小春网

 找回密码
 注册账号
查看: 2141|回复: 10
收起左侧

[IT 交流] c#高手过来帮帮我,续集。。

[复制链接]
发表于 2012-7-2 11:02:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

x
本帖最后由 michaelmimi 于 2012-7-2 11:10 编辑

上次问了用ie host .net application的问题。
这次的问题是那个的发展版。

目的是做一个这样的机能
用c#做一个读取suica情报的程序,把这个程序在ie中host

现状是,
单独用c#(使用一个叫FelicaLib的lib)可以实现读取suica情报。
单独在ie中可以host一些动作(winform啊之类的)
但是把这个读取suica情报的app放在ie中,出现了如下的错误。
具体分析一下发现问题出现在使用FelicaLib的地方,
为什么在ie中使用FelicaLib就会出现权限报错呢?
到底是哪儿的权限不够呢?
谁能帮我看看

Just-In-Time (JIT) デバッグを呼び出すための詳細については、
ダイアログ ボックスではなく、このメッセージの最後を参照してください。

************** 例外テキスト **************
System.Security.SecurityException: System.Security.Permissions.SecurityPermission
   場所 FelicaLib.Felica..ctor()
   場所 _20120702.UserControl1.button1_Click(Object sender, EventArgs e)
   場所 System.Windows.Forms.Control.OnClick(EventArgs e)
   場所 System.Windows.Forms.Button.OnClick(EventArgs e)
   場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   場所 System.Windows.Forms.Button.WndProc(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
失敗した最初のアクセス許可の種類:
System.Security.Permissions.SecurityPermission
失敗したアセンブリのゾーン:
MyComputer


************** 読み込まれたアセンブリ **************
mscorlib
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.5456 (Win7SP1GDR.050727-5400)
    コードベース: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.5456 (Win7SP1GDR.050727-5400)
    コードベース: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
20120702
    アセンブリ バージョン: 1.0.0.0
    Win32 バージョン: N/A
    コードベース: http://localhost/20120702.DLL
----------------------------------------
System.Windows.Forms
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.5460 (Win7SP1GDR.050727-5400)
    コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.5462 (Win7SP1GDR.050727-5400)
    コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Accessibility
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.4927 (NetFXspW7.050727-4900)
    コードベース: file:///C:/Windows/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
Microsoft.mshtml
    アセンブリ バージョン: 7.0.3300.0
    Win32 バージョン: 7.0.3300.0
    コードベース: file:///C:/Windows/assembly/GAC/Microsoft.mshtml/7.0.3300.0__b03f5f7f11d50a3a/Microsoft.mshtml.dll
----------------------------------------
System.resources
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.5420 (Win7SP1.050727-5400)
    コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.resources/2.0.0.0_ja_b77a5c561934e089/System.resources.dll
----------------------------------------
System.Windows.Forms.resources
    アセンブリ バージョン: 2.0.0.0
    Win32 バージョン: 2.0.50727.5420 (Win7SP1.050727-5400)
    コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ja_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** JIT デバッグ **************
Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
またはコンピュータ (machine.config) の構成ファイルの jitDebugging
値を system.windows.forms セクションで設定しなければなりません。
アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
なりません。

例:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

JIT デバッグが有効なときは、このダイアログ ボックスで処理するよりも、
ハンドルされていない例外はすべてコンピュータに登録された
JIT デバッガに設定されなければなりません。
------------------------------------------------------------------------------------------------------------
①c#ソース见附件
②html文件不能上传,就写在这儿好了
<html>
<body>
<p>Hello World Control<br> <br></body>
<object id="HelloWorldControl1"
classid="http:20120702.dll#_20120702.UserControl1"
height="500" width="500" VIEWASTEXT>
</object>
<br><br>
</html>
③将html和生成的dll放在apache下,就可以看到效果了。(ie,信赖サイト)
我放了一份在服务器,url是http://www.axas-japan.co.jp/axhp/sitemap/hoge





20120702.zip

54.08 KB, 下载次数: 4, 下载积分: 元气 -1 点

c#ソース

发表于 2012-7-3 13:47:15 | 显示全部楼层
这个属于IO操作了吧   IE等浏览器好像不能轻易的IO操作

以前看过文章说有人建议javascript增加文件读写功能(不知道现在的javascript行不行),但是也是因为各种权限问题弄得很复杂。。。

我不是专家  但是好像应该往IE里进行IO操作这个方向去研究。。。

浏览器都不允许本地的读写操作。。。否则病毒就更加猖狂了。。。  不过也许会有办法???我就不知道了
回复

使用道具 举报

发表于 2012-7-7 11:21:06 | 显示全部楼层
对不起阿。我也不是很懂。可能说的不对。

听上面的大侠说是IO的问题,你看能不能写一个EXE实现suica的读写,
然后去调用那个EXE去实现你的功能?
(我周一去问问我的同事看看)
回复

使用道具 举报

发表于 2012-7-8 15:24:48 | 显示全部楼层
太久没碰。net了,也没太看懂lz的描述,猜测猜测,仅供参考。

首先是浏览器的安全设置,就是你的app能不能运行的问题,你现在似乎不是这个问题。
第二个是FelicaLib组件在做本地IO操作时,并不是使用管理员帐号,可能有一些特定的帐号,这个是取决于浏览器还是web server我不太清楚,可能有一个特定的受限帐号。而这个账户可能没有你做的IO操作的权限。
回复

使用道具 举报

发表于 2012-7-8 15:49:31 | 显示全部楼层
迷糊给出下面的建议供楼主参考:

1)看了一下你写的代码,使用了felicalib这个库
楼主提供的felicalib.dll好像是2008年编译的,0.4.1.1版
官网上提供的最新的dll和代码应该是0.4.2版
由于是开源的软件,迷糊建议楼主把最新版代码下载下来,在自己的环境里面统一编译,以防止新旧.NET Framework版本间不兼容造成的问题

请参考下面的网址:
官网:http://felicalib.tmurakam.org/index.html
代码:https://github.com/tmurakam/felicalib

2)用PEVerify 工具检验一下felicalib.dll
发现有下面这样的错误
C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs>Peverify felicalib.dll

Microsoft (R) .NET Framework PE Verifier.  Version  3.5.30729.1
Copyright (c) Microsoft Corporation.  All rights reserved.

File not found or has bad headers.
1 Error(s) Verifying felicalib.dll

所以推断这个dll库可能并不支持3.5以后的.NET Framework的安全机制
有可能需要改修代码,由于作者已经两年没有维护这个代码了,可能得DIY了,请注意一下代码的License的问题

工具使用参考网页:http://msdn.microsoft.com/zh-cn/library/62bwd2yd.aspx

3)另外,提示一下
.net framework有自己的一套运行时权限,不同于操作系统的权限
在2.0以前的旧版本上,可以使用Mscorcfg.msc (.NET Framework 構成ツール)改权限
方法:http://msdn.microsoft.com/ja-jp/library/2bc0cxhc(v=vs.100).aspx

在新版本上,引入了很多新的特性,可以参考微软官方网站
迷糊给出的都是日文链接,楼主可以自己更改语言设置,参考中文或者英文信息
http://msdn.microsoft.com/ja-jp/library/dd233103.aspx

暂时,迷糊的认识是:
1)通过修改felicalib的源代码来解决权限问题
2)通过研究微软官网上的信息,想办法让程序运行于本地级别的权限上
【介个估计不是啥好方法,可能容易被恶意使用,造成安全隐患】


回复

使用道具 举报

 楼主| 发表于 2012-7-9 17:44:05 | 显示全部楼层
等待UFO 发表于 2012-7-3 13:47
这个属于IO操作了吧   IE等浏览器好像不能轻易的IO操作

以前看过文章说有人建议javascript增加文件读写功 ...

你好,
谢谢你的建议。
我没有想写,只是想读。
这样的权限,游览器也木有么?
我现在的做法是,用基本相同的source做成了activex的形式, 暂时解决的了这个问题。
但是为何winform不可以,我还是不明白。
但是十分感谢你,
我会按照你说的方面想想看
回复

使用道具 举报

 楼主| 发表于 2012-7-9 17:45:02 | 显示全部楼层
casbey 发表于 2012-7-7 11:21
对不起阿。我也不是很懂。可能说的不对。

听上面的大侠说是IO的问题,你看能不能写一个EXE实现suica的读写 ...

你好,
做成exe之后也遇到权限问题。
http://hpcgi1.nifty.com/MADIA/VB ... 200605/06050112.txt
和这个贴说的很相似,
不过我按照他说的方法也没有解决。
回复

使用道具 举报

 楼主| 发表于 2012-7-9 17:46:08 | 显示全部楼层
casbey 发表于 2012-7-7 11:21
对不起阿。我也不是很懂。可能说的不对。

听上面的大侠说是IO的问题,你看能不能写一个EXE实现suica的读写 ...

你好,
谢谢你的回复。
做成exe后仍然出现权限问题。
http://hpcgi1.nifty.com/MADIA/VB ... 200605/06050112.txt
和这个贴里的情况很相似,
不过lz按照他教的方法也没有解决。
回复

使用道具 举报

 楼主| 发表于 2012-7-9 17:47:11 | 显示全部楼层
恶灵退散 发表于 2012-7-8 15:24
太久没碰。net了,也没太看懂lz的描述,猜测猜测,仅供参考。

首先是浏览器的安全设置,就是你的app能不能 ...

谢谢你的回答。
我感觉也是你的说的第二个原因。
我发现了这个帖子
http://hpcgi1.nifty.com/MADIA/VB ... 200605/06050112.txt
和这个贴里的情况很相似,
不过lz按照他教的方法也没有解决。
回复

使用道具 举报

 楼主| 发表于 2012-7-9 18:07:24 | 显示全部楼层
憨吃迷糊睡 发表于 2012-7-8 15:49
迷糊给出下面的建议供楼主参考:

1)看了一下你写的代码,使用了felicalib这个库

版主大人,
你真是让人感动!!
这件事的后续是,
我尝试用activeX的形式,而不是winform,
基本是相同的source,
实现了想要的功能。
可是winform那个其实还没有解决,我会去尝试你给的两个建议。
用第二个方法的话,
是不是用户的电脑也得修改设置?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 快速回复 返回顶部 返回列表