Foxtable(狐表)用户栏目专家坐堂 → [求助]项目发布后的问题


  共有2567人关注过本帖树形打印复制链接

主题:[求助]项目发布后的问题

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]项目发布后的问题  发帖心情 Post By:2018/4/9 19:23:00 [显示全部帖子]

我的项目发布时,做了一系列的设置,包括:

图片点击可在新窗口打开查看此主题相关图片如下:发布设置.png
图片点击可在新窗口打开查看

在项目的BeforeConnectOuterDataSource事件中,代码如下:
'''
If e.name = "XYZ" Then
    Dim s As String  = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & e.ProjectPath  & "AAA.accdb;Persist Security Info=False;Jet OLEDB:Database Password=abcdef"
    If Connections.TryConnect(s) = False Then
        e.HideSplashForm = True
        MessageBox.Show("数据源无法连通!请检查数据库或者网络,再打开本程序。")
        Syscmd.Project.Exit()
        Return
    Else
        e.ConnectionString = s
    End If
End If

问题:
1、项目发布之后,在Publish文件夹中,仍然可以Ctrl+发布后的项目.exe打开项目,只是我隐藏了表名,不能做表事件等编辑等。但仍然可以在界面上选择隐藏列等等,把数据库的表结构调出来。---------如何让用户按Ctrl+运行程序名都无效?
2、项目发布之后,我修改了access的密码,然后在Publish文件夹中,运行发布后的项目.exe,先是弹窗提示:数据源无法连通!请检查数据库或者网络,再打开本程序。点击确定关闭了这个弹窗之后,接着就弹出下面这个窗口
---------------------------
错误
---------------------------
创建外部连接"XYZ"失败,请联系管理员或开发者,重新设置数据链接字符串!
---------------------------
确定   
---------------------------

点击确定之后,就显示了链接数据源的窗口,在这里就可以看到加密的数据库的密码。

------所以,用户如果建一个完全相同的表名,但设置了一个错误的密码,用这种方式仍然可以知道真正的密码。
------怎么避免这种情况?


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/4/9 22:08:00 [显示全部帖子]

使用的版本是2018-03-09
测试的样例如附件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:发布项目的问题.zip
操作步骤如附件:

图片点击可在新窗口打开查看此主题相关图片如下:01设置外部数据源.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:02设置项目事件.png
图片点击可在新窗口打开查看





 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/4/9 22:09:00 [显示全部帖子]

继续

图片点击可在新窗口打开查看此主题相关图片如下:03发布前设置项目属性.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:04发布项目基本设置.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:05发布项目高级设置.png
图片点击可在新窗口打开查看




 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/4/9 22:09:00 [显示全部帖子]

继续

图片点击可在新窗口打开查看此主题相关图片如下:06发布之后的publish.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:07publish的project下的数据库文件.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:08ctrl+双击发布程序报错.png
图片点击可在新窗口打开查看




 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/4/9 22:09:00 [显示全部帖子]

继续

图片点击可在新窗口打开查看此主题相关图片如下:09报错之后点击确定再弹出设置外部数据源窗口.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:10最终的设置数据源窗口.png
图片点击可在新窗口打开查看



 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/4/9 22:31:00 [显示全部帖子]

没有解决我的问题呀。
我是说已经发布的项目,是指publish中的“已经发布的项目.exe“仍然可以按住Ctrl+双击打开,而且一直到显示链接数据源为止。

我是不希望已经发布的项目,被用户以这种方式打开;而且更不能忍受的是,数据库的密码就这么显示出来了。

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/4/9 23:05:00 [显示全部帖子]

其实我是要做一个工具级的东西,不需要什么用户名密码之类的管理,但不能让用户直接打开数据库文件(除非他知道密码)。
添加一个用户X之后,重新发布。新问题出来了
1、发布后的程序,双击时,会首先出来用户登录窗口,用户名要选择开发者或X------这个实际上应当略过。
2、如果数据库文件不存在或者密码错误,仍然会弹出报错窗口,只是不会再弹出设置数据源的窗口了。
---------------------------
错误
---------------------------
创建外部连接"XYZ"失败,请联系管理员或开发者,重新设置数据链接字符串!
---------------------------
确定   
---------------------------


[此贴子已经被作者于2018/4/9 23:06:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/4/9 23:28:00 [显示全部帖子]

添加一个空白数据库,连接不到其它数据源的时候就连接这个空白数据库

无法连接数据源时

在打开项目的时候,如果无法连接到某个数据源,会出现一个数据源设置窗口,允许临时修改数据源的设置。

必须注意的是:

1、这种设置默认是临时的,启动项目后,需要重新打开外部数据源管理窗口,重新设置数据源
2、如果希望保存这种设置,可以在设置窗口选中选项“保存设置”,这样下次打开项目之后,会按照新的设置连接数据源,无需重复设置。
3、只有开发者和管理员,才有这种临时设置的权限,其他用户打开项目的时候,如果某个数据源无法连接,将直接退出。
4、如果不希望管理员有这种临时修改数据源的权限,可以在项目属性设置中,将“允许设置数据源”属性设置为False(否)。


第3点说的是某个数据源无法连接,将直接退出,而实际上发布后并未直接退出,仍然弹出了要设置数据源的报错窗口。

---怎么连这个提示要设置数据源的报错窗口都没有,就直接退出?

[此贴子已经被作者于2018/4/9 23:48:00编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2239 积分:18446 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/4/10 10:50:00 [显示全部帖子]

BeforeOpenProject事件:
Dim s As String  = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & FileSys.GetParentPath(e.File) & "\abc.accdb;Persist Security Info=False;Jet OLEDB:Database Password=123456"
If Connections.TryConnect(s) = False Then
    e.HideSplashForm = True
    MessageBox.Show("打开项目前检查,数据源无法连通!请检查数据库或者网络,再打开本程序.")
    Syscmd.Project.Exit()
    Return
End If

BeforeConnectOuterDataSource事件:

If e.name = "XYZ" Then
    e.C & e.ProjectPath & "abc.accdb;Persist Security Info=False;Jet OLEDB:Database Password=123456"
End If

发布之后,在publish文件夹下双击发布后的程序,运行正常。
退出后,把publish\project文件夹下的
abc.accdb改名称为“aaa.accdb",再去
在publish文件夹下双击发布后的程序,响应结果是:
1、弹出提示窗口:
打开项目前检查,数据源无法连通!请检查数据库或者网络,再打开本程序
2、点击弹窗中的“确定”按钮,又继续弹出设置数据源的报错窗口

为什么第2步仍然会出来呢?连接不成功,就强制退出了呀。

 回到顶部