/*++ Copyright (c) 1994 Microsoft Corporation Module Name: kill.c Abstract: This module implements a task killer application. Author: Wesley Witt (wesw) 20-May-1994 Environment: User Mode --*/ #include #include #include #include #include "common.h" VOID Usage( VOID ); DWORD NumberOfArguments; PWSTR Arguments[ 128 ]; int _cdecl main( int argc, char *argv[] ) { PWSTR s, *pArgs; BOOLEAN IsMountPoint = FALSE; PWSTR LinkName, TargetPath; WCHAR TargetPathBuffer[ MAX_PATH ]; GetCommandLineArgs( &NumberOfArguments, Arguments ); if (NumberOfArguments == 0) { Usage(); return 1; } pArgs = &Arguments[ 0 ]; s = *pArgs; if (s && (*s == L'-' || *s == L'/')) { _tcslwr( ++s ); if (*s == L'm') { IsMountPoint = TRUE; NumberOfArguments -= 1; s = *++pArgs; } else if (*s == L'?') { Usage(); return 0; } else { Usage(); return 1; } } if (NumberOfArguments > 2) { Usage(); return 1; } LinkName = s; if (NumberOfArguments == 2) { TargetPath = *++pArgs; CreateSymbolicLinkW( LinkName, TargetPath, IsMountPoint, NULL ); } else { QuerySymbolicLinkW( LinkName, TargetPathBuffer, MAX_PATH ); } return 0; } VOID Usage( VOID ) /*++ Routine Description: Prints usage text for this tool. Arguments: None. Return Value: None. --*/ { fprintf( stderr, "Microsoft (R) Windows NT (TM) Version 5.0 MKLNK\n" ); fprintf( stderr, "Copyright (C) 1997 Microsoft Corp. All rights reserved\n\n" ); fprintf( stderr, "usage: SYMLINK [-m] fileName [targetPath]\n\n" ); fprintf( stderr, " -m specifies to create a mount point link\n" ); fprintf( stderr, " instead of a symbolic link\n\n" ); fprintf( stderr, " fileName\n" ); fprintf( stderr, " This is the name of the symbolic link\n" ); fprintf( stderr, " to be created, modified or queried.\n" ); fprintf( stderr, " \n" ); fprintf( stderr, " targetPath\n" ); fprintf( stderr, " If not specified, this program displays\n" ); fprintf( stderr, " the current targetPath associated with \n" ); fprintf( stderr, " the named symbolic link.\n" ); fprintf( stderr, " If specified, either creates a new symbolic\n" ); fprintf( stderr, " link that points to this targetPath\n" ); fprintf( stderr, " or if the named symbolic link already exists,\n" ); fprintf( stderr, " modifies its targetPath to the new value.\n" ); ExitProcess(0); }