在应用程序中怎样登录到网络中,程序退出时注销登录??(100分)

呆非4

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在我编写的程序中提示使用者输入用户名及密码,然后
登录到网络中,在我的程序退出前自动注销该用户。如何实现?
 
您编的程序是什么程序? 网络数据库吗? 还是文件管理类的
从WINDOWS系列使用LANMAN 网络来说,一台机器下网时似乎没有
发送信息给服务器告诉服务器“我下去了”的功能
如果你在编SQL SERVER类网络数据库程序,并使用了DATABASE控件的话,DATABASE控件在程序关闭时会自动断开服务器连接

如果我在做网络数据库程序,需要用到你提到的功能的话
可能我会这么做
第一种办法: 简单易行, 从SQL SERVER的系统表 dbo.sysusers 表里查
那些用户上来了, 同时在客户端添加DATABASE控件,客户端断开数据库连接
dbo.sysusers表里会找不到此用户,如果想知道当前有多少用户在
访问SERVER, 可以在sql server的 master库里使用
select distinct net_address from dbo.sysprocesses where kpid<>0
得到当前连接到 SERVER的网卡数量,也就是客户端连接到SERVER上的数量

第2种方法通用性强,就是你自己控制用户登陆和访问控制
在SERVER端做一个 WIN SOCKET SERVER ,负责登陆
客户端使用CLIENT SOCKET 登陆到SERVER端你的程序里
这样客户端在与服务器断开的时候给SERVER SOCKET发消息
就可以了

 
我是用C++BUILDER写的程序。
网络结构是:
NT SERVER + 4台WIN98
WIN98 上的应用程序根据不同的用户,存取不同
的数据库(*。DBF),而对其他。DBF无存取
权。

我的思路是:
WIN98启动时,不以特定用户(如GL)登录(可以用
其他用户登录)。在启动我的程序时,要求使用者以GL
用户登录,程序退出时,注销GL用户。


客户的情况是:
有四个部门:销售,仓库,会计,经理。
销售部只能存取销售方面的数据,
仓库只能存取仓库方面的数据,
会计部只能存取会计方面的数据,
而经理则能存取所有数据。

而我不希望用SQL SERVER这样大型的数据库。
我想用DBF库。于是我想将所有数据库放在NT上
为四个部建四个用户。因为各个部均能读写所属的
数据库,我又担心会有人不通过我的程序,而直接
操作数据库(如私自修改库内容),所以,我不想
让用户能在“网络邻居”中“看到”或能写这些数据库。
 
NT有安全描述符,不知道98有没有.
我也没有用过安全描述符,但猜想能够完成您的要求.

另外的方法是自己写一个server管理这些文件.当然这个方法
的工作量相当大...
 
Ycan use:
WNetAddConnection2
WNetAddConnect3, to connect
network resource.
If you just want to logon,
you can use a resource named IPC$,
for example,
you want to logon to a NT domain,
let the NT machine name is PDC,
then you can try connect to :
//PDC/IPC$,
localdriver name set to null.
 
看了你的问题之后,感觉并不是任务和要求复杂,无非是隔离用户访问的事情
不要自己把简单问题做的太复杂

首先,对于你的要求,你可以使用PARADOX表或是ACCESS表来做数据保存
之所以如此,是因为这两中LOCAL TABLE带有口令保护功能(PARADOX表里可以设置
个人对表的某些字段的访问权限)
即使你把所有的表放在一起让用户看,他们也不一定能破解开(呵呵,起码我不会
破解)

第二,利用NT本身的网络管理功能, 从物理上分离开这些文件的存放位置不就行了?
将FAT分区用CONVERT命令可以转换成NTFS分区
这样你可以在NTFS分区上利用NT的文件管理审计功能, 将文件和目录的拥有权限设置给每个不同用户,
至于你提到的退出程序时断开SERVER连接,我看没必要,要是我启动了程序
在程序运行中去想办法连接其他人的数据库该怎么办,呵呵

第一种办法是从编程的角度做,数据文件都放在一起也不怕别人来看,有口令限制呢
第二种办法利用了NT自身的功能,就象个人主页里的登陆权限一样,每个人或工作组都有属于自己的目录,不就可以了,别人看不到属于我的共享目录
第二种方法只使用于NTFS分区

如果你不愿意改动分区,建议你用第一种方法,也很简单的,用数据转换工具
把DBF导入PARADOX就是了
 
王兄:
Paradox中怎样设置保护权限?口令保护功能在哪设置?
PEASURE兄:
您的方法我现在还没空试,看起来应该可行。
 
DATABASE DESKTOP 中设置PASSWORD
 
我怎么只能看到昨天(3月3日)的帖子?现在已经4号了?
密码设置,权限设置,我已经知道在DESKTOP中设置了。
 
王兄说的有理。P兄的方法我没试,CJ兄的也对,也给几分聊以安慰,
小弟分不多,大家别见怪。
 
编写一个系统服务程序, 在系统注册表中登记, 这样, 用户还没有登录你的程序
就运行了. 通过发键盘消息(kbd_event函数), 你可以控制登录.

至于在Delphi中如何编写Windows 95/98的系统服务程序(Service), 我有源码,
你需要的话我可以mail给你.

如何退出? 用ExitWindowsEx或ExitWindows
 
不就是防止用户非法访问数据文件嘛,NT完全可以解决。
你只要建一个共享目录,目录名以$结尾,那么这个共享目录在网上邻居
里面是看不到的(除非你手动输入目录名),
这样其他用户也就不会知道有这么个目录,从而不会非法访问了。
当然前提是你永远不要把这个目录名告诉别人。

我已在我的一个项目中这么做了,效果好得很。
 
caak:那是骗人的
 
还可以通过一个Socket联接, 在客户程序联接到Server时, 报告自己的用户名,
Server端的程序用NetUserAdd等函数可以动态加用户的访问权限, 这样, 你就
可以控制登陆的用户详细的访问权限.
 
To CJ:为什么说是骗人的呢?能给我讲一江吗?因为我正在这么用。

我想,大部分用户都不是什么计算机高手,这种方法足够了保险了,呆非4之所以不用SQL SERVER,我猜也是因为没必要。如果真是有什么非常保密的数据,那不仅仅是要用安全的数据库这么简单的事了。
 
听了大家的意见,我觉得还是采取简单的方法,
太复杂了,自已很累,还容易出错。
最终我决定还是用王兄的方法,只要改一下数据库就行,
多好!
我给大家分分了,(我已分了两次,不知什么原因,版主一直没有
将该问题剔出”待答问题“)。
 
听了大家的意见,我觉得还是采取简单的方法,
太复杂了,自已很累,还容易出错。
最终我决定还是用王兄的方法,只要改一下数据库就行,
多好!
我给大家分分了,(我已分了两次,不知什么原因,版主一直没有
将该问题剔出”待答问题“)。
 
顶部