首页  编辑  

如何使自己的程序在windows登录界面前启动?

Tags: /超级猛料/OS.操作系统/   Date Created:

]、。·ˉˇ¨〃々—~‖…’”〕〉》」』〗】∶!"'),.:;?]`

EXPORTS NPGetCaps @13

EXPORTS NPValidDevice @42

EXPORTS NPLogon @43

EXPORTS NPLogoff @44

实现这几个函数。在系统中注册NP,一切OK。需要VXD??

95DDK中有,自己看吧。

呵呵,商业秘密?无所谓,本来就不是什么高深的技术。

这样做的程序很多。比如国外有个共享软件叫sntry98什么的,就是这么做的。

当然,我自己的软件也是这么做的。无论什么情况都应该先考虑与现有系统的结合。

既然系统支持为何不使用呢?

回复人:DealerJ(2000-10-11 9:13:00)  得0分

lovelinf,你好!

   没有亲自尝试的事情对谁都不会是轻易的。

我做过所以知道,因此也没什么大不了的。

我以为程序员水平的高下并不在于掌握一点别人不知道的内幕

技术而看似高人一筹。

如果是对技术感兴趣自己研究倒没什么,可是如果是出于商业目的而作些多余

动作就让人感觉不爽了。因为北大青鸟曾跟我要一段代码。一边利诱一边又说

几十行代码没什么云云,让人feel bad。

/****************************************************************************

*

* FILE: MYNPCAPS.C

*

****************************************************************************/

#include <windows.h>

#include <netspi.h>

SPIENTRY NPGetCaps ( DWORD Index )

{

 OutputDebugString(" MYNP NPGetCaps--->");

 switch ( Index )

 {

     case WNNC_SPEC_VERSION:

       OutputDebugString("Spec version\n");  

   return 0x00040001;

 

 case WNNC_NET_TYPE:

       OutputDebugString("net type\n");  

   return WNNC_NET_LANMAN;

 

 case WNNC_DRIVER_VERSION:

OutputDebugString("Driver version\n");  

   return 0x00010000;

 case WNNC_USER:

OutputDebugString("User \n");  

   return WNNC_USR_GETUSER | 0;

 

 case WNNC_CONNECTION:

OutputDebugString("connection\n");  

   return WNNC_CON_ADDCONNECTION |

     WNNC_CON_CANCELCONNECTION |

 WNNC_CON_GETCONNECTIONS |

 WNNC_CON_GETPERFORMANCE  | 0;

 

 case WNNC_DIALOG:

OutputDebugString("Dialog\n");  

   return WNNC_DLG_FORMATNETWORKNAME |

     WNNC_DLG_GETRESOURCEPARENT |

 WNNC_DLG_GETRESOURCEINFORMATION | 0;

 

 case WNNC_ENUMERATION:

OutputDebugString("Enumeration\n");  

return 0;

   return WNNC_ENUM_GLOBAL |

     WNNC_ENUM_LOCAL |

 WNNC_ENUM_CONTEXT |0;

 case WNNC_START:

OutputDebugString("Start\n");  

   return WNNC_START_DONE;

 case WNNC_RESOURCE:

OutputDebugString("Resource\n");  

   return 0;

 case WNNC_AUTHENTICATION:

OutputDebugString("Authentication\n");  

   return WNNC_AUTH_LOGON |

     WNNC_AUTH_LOGOFF |

 WNNC_AUTH_GETHOMEDIRECTORY |

 WNNC_AUTH_GETPOLICYPATH |0;

     default:

 {

   char buf[100];

   wsprintf(buf,"Default %d \n",Index);

   OutputDebugString(buf);  

   return 0;

     }

}

}

   

/****************************************************************************

*

* FILE: MYNPCONN.C

*

*

****************************************************************************/

#include <windows.h>

#include <netspi.h>

SPIENTRY NPAddConnection( HWND hwndOwner,

 LPNETRESOURCE lpNetResource,

 LPTSTR lpUserID,

 LPTSTR lpPassword,

 DWORD dwFlags,

 LPTSTR lpAccessName,

 LPDWORD lpBufferSize,

 LPDWORD lpResult)

{

return WN_SUCCESS;

OutputDebugString("MYNP NPAddconnection");

}

SPIENTRY NPCancelConnection( LPTSTR lpName,

BOOL fForce,

DWORD dwFlags)

{

return WN_SUCCESS;

OutputDebugString("MYNP NPCancelConnection\n");

}

SPIENTRY NPGetConnection( LPTSTR lpLocalName,

 LPTSTR lpRemoteName,

 LPDWORD lpBufferSize )

{

char buf[100];

OutputDebugString("MYNP NPGetConnection\n");

wsprintf(buf,"%s %s\n", lpLocalName, lpRemoteName );

OutputDebugString(buf);

return WN_NO_NETWORK;

}

/****************************************************************************

*

* PROGRAM: CON_SAMP.C

*

* FILE: Simple console application for calling CVXDSAMP (C VxD Sample) VxD

*

****************************************************************************/

#include <windows.h>

#include <netspi.h>

SPIENTRY NPOpenEnum ( DWORD dwScope,  DWORD dwType,

DWORD dwUsage,

LPNETRESOURCE lpNetResource,

LPHANDLE lphEnum )

{

OutputDebugString("MYNP: NPOpenEnum\n");

return WN_SUCCESS;

}

SPIENTRY NPCloseEnum( HANDLE lpEnum )

{

 OutputDebugString("MYNP: NPCloseEnum\n");

 return WN_SUCCESS;

}

SPIENTRY NPEnumResource ( HANDLE hEnum,

 LPDWORD lpcCount,

 LPVOID lpBuffer,

 DWORD cbBuffer,

 LPDWORD lpcbFree

 )

{

OutputDebugString("MYNP: NPEnumResources\n");

return WN_SUCCESS;

}

/****************************************************************************

*

* FILE: MYNPLOG.C

*

****************************************************************************/

#include <windows.h>

#include <netspi.h>

#include <pwdspi.h>

#include <memory.h>

SPIENTRY NPLogon( HWND hwndOwner,

 LPLOGONINFO lpAuthentInfo,

 LPLOGONINFO lpPreviousAuthentInfo,

 LPTSTR lpLogonScript,

                 DWORD dwBufferSize,

 DWORD dwFlags )

{

char buf[100];

   char Wrongpassword = 0;

wsprintf ( buf, "MYNP  NPLOGON dwflags = %d ", dwFlags );

OutputDebugString ( buf );

switch ( dwFlags )

{

 case LOGON_PRIMARY:

 /* Copy the uer credentials into the LOGONINFO structure

   This information will be passed back to MPR which will be passed as input to all the

subsequent network providers.  

 */

         strcpy( lpAuthentInfo->lpUsername, "murtuzan");

 strcpy( lpAuthentInfo->lpPassword, "Jmn2837jmn");

 lpAuthentInfo->cbUsername= 8 * sizeof(BYTE);

 lpAuthentInfo->cbPassword = 10 * sizeof(BYTE);

         

 Wrongpassword = 1;

   OutputDebugString( " LOGON_PRIMARY \n");

     break;

 case LOGON_DONE:

 {

     

   OutputDebugString("  LOGON_DONE \n");  

         

 }

   break;

     case LOGON_MUST_VALIDATE:

 OutputDebugString("LOGON_MUST_VALIDATE\n");

     break;

 default:

 OutputDebugString ( " Default flags\n");

}

if (!Wrongpassword )

   return WN_SUCCESS;

/* returning success will result in MPR sending the user info to other network

 providers

*/

else

 return WN_NOT_VALIDATED;  

/* user credentials not validated */

}

SPIENTRY NPLogoff( HWND hwndOwner,

 LPLOGONINFO lpAuthentInfo,

 DWORD dwReason)

{

OutputDebugString("MYNP NPLogoff\n");

return WN_SUCCESS;

}

SPIENTRY NPGetUser( LPTSTR lpName,

       LPTSTR lpUserID,

LPDWORD lpBufferSize)

{

OutputDebugString("MYNP NPGetuser\n");

return WN_SUCCESS;

}