VC 如何读取网上邻居某台电脑下的共享目录

VC 如何读取网上邻居某台电脑下的共享目录,第1张

C:\>net help view

此命令的语法是:

NET VIEW

[\\computername [/CACHE] | /DOMAIN[:domainname]]

NET VIEW /NETWORK:NW [\\computername]

NET VIEW 用于显示一个计算机上共享资源的列表。当不带选项使用本命令时,它就会显示

当前域或网络上的计算机上的列表。

\\computername 指用户希望浏览其共享资源的计算机。

/DOMAIN:domainname 指定用户希望浏览有效的计算机所在的域。如果省略了域名,

就会显示局域网络上的所有域。

/NETWORK:NW 显示 NetWare 网络上所有可用的服务器。如果指定了一个计算

机名,就会显示 NetWare 网络中那个计算机上的可用资源。

/CACHE 显示指定计算机上的脱机客户资源缓存设置

你首先需要为VC下载一个Microsoft

Platform

SDK

for

Windows

XP

SP2,有了这个包以后,将psapih和psapilib拷贝到VC的include和lib目录,采用PSAPI编程:

1、用EnumProcesses函数列出当前所有进程

2、用OpenProcess打开进程

3、用GetProcessImageFileName函数就可以获取程序的完整目录

上面三个函数的资料在互联网上很完整,你可以用函数名作为关键字搜索一下就知道了。

下面举个例子:

#include

<windowsh>

#include

<stdioh>

#include

<tcharh>

#include

<psapih>

#pragma

comment(lib,

"psapilib")

void

PrintProcessNameAndID(

DWORD

processID

)

{

TCHAR

szProcessName[MAX_PATH]

=

TEXT("<unknown>");

TCHAR

szProcessPath[MAX_PATH]

=

TEXT("<unknown>");

//

获取进程句柄

HANDLE

hProcess

=

OpenProcess(

PROCESS_QUERY_INFORMATION

|

PROCESS_VM_READ,

FALSE,

processID

);

//

获取进程名称和路径

if

(NULL

!=

hProcess

)

{

HMODULE

hMod;

DWORD

cbNeeded;

if

(

EnumProcessModules(

hProcess,

&hMod,

sizeof(hMod),

&cbNeeded)

)

{

GetModuleBaseName(

hProcess,

hMod,

szProcessName,

sizeof(szProcessName)/sizeof(TCHAR)

);

}

GetProcessImageFileName(hProcess,

szProcessPath,

MAX_PATH);

}

//

打印进程名、进程号和路径地址

_tprintf(

TEXT("%s

(PID:

%u)

<%s>\n"),

szProcessName,

processID,

szProcessPath

);

CloseHandle(

hProcess

);

}

void

main(

)

{

//

获取进程列表

DWORD

aProcesses[1024],

cbNeeded,

cProcesses;

unsigned

int

i;

if

(

!EnumProcesses(

aProcesses,

sizeof(aProcesses),

&cbNeeded

)

)

return;

//

计算当前一共多少个活动进程

cProcesses

=

cbNeeded

/

sizeof(DWORD);

//打印进程信息

for

(

i

=

0;

i

<

cProcesses;

i++

)

if(

aProcesses[i]

!=

0

)

PrintProcessNameAndID(

aProcesses[i]

);

}

1、可以利用getenv函数来实现。

在Linux系统中,home目录的定义是通过系统环境变量中的HOME变量值来确定的,在shell下可以通过

echo $HOME来查看。

而在C语言中,库函数getenv可以用作获取环境变量值。该函数位于stdlibh, 原型为

char getenv(char name);

功能为获取名字为name的环境变量字符串。

所以,下面代码就可以获取到home目录名了:

2、例程:

char home;

home = getenv("HOME");

printf("the home path is %s\n", home);

C++标准库头文件,不同的编译器默认路径不相同。

Vc60一般在安装目录下的\VC98\INCLUDE目录,比如C:\Program Files (x86)\Microsoft Visual Studio\VC98\INCLUDE。

Vs一般在位于$VSPATH\VC\include路径下面。

gcc一般默认在 /usr/include目录下

自定义头文件文件要么和源代码文件放在同一处,要么在编译的时候指明自定义头文件路径,这样编译器才能找到头文件,才能编译通过。

另外,一些头文件需要在工程里面添加与头文件相对应的DLL动态链接库的支持才能用,因为头文件大多都只是定义,具体地实现是在cpp中,但还有一些像windows自带的头文件,他们的实现都是在DLL里面,你必须添加对这些DLL的支持才能使用这个头文件。

先用OpenProcess()函数将进程打开后,利用EnumProcessModules()函数枚举该进程的模块,利用GetModuleFileNameEx()函数就能取得该进程的路径

#include <stdioh>

#include <windowsh>

#include "PSAPIH"

#pragma comment( lib, "PSAPILIB" )

int main(void)

{

DWORD processid[1024],needed,processcount,i;

HANDLE hProcess;

HMODULE hModule;

char path[MAX_PATH] = "";

char temp[256];

printf("ShowProcessPath with [Process Status API]/n");

EnumProcesses(processid, sizeof(processid), &needed);

processcount=needed/sizeof(DWORD);

for (i=0;i<processcount;i++)

{

hProcess=OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,processid[i]);

if (hProcess)

{

EnumProcessModules(hProcess, &hModule, sizeof(hModule), &needed);

GetModuleFileNameEx(hProcess, hModule, path, sizeof(path));

GetShortPathName(path,path,256);

itoa(processid[i],temp,10);

printf("%s --- %s/n",path,temp);

}

else

{

printf("Failed!!!/n");

}

}

CloseHandle(hProcess);

CloseHandle(hModule);

itoa(processcount,temp,10);

printf("/nProcess Count:%s/n/n",temp);

return 0;

}

\\是的到应用程序的当前目录,但当前目录不一定等于应用程序执行文件的所在目录,一个应用程序被启动时,当前目录是可以被任意设置的。

GetModuleFileName()得到模块的完整路径名,例如,你载入c:\windows\system32\adll,得到模块句柄h,则你可以用GetModuleFileName()得到h模块的完整路径名。

下面是我从我的程序里扒拉出来的代码,因为我用的是unicode的环境

所以函数后面会带"W",而对应的ansi版本带的是"A"

wchar_t

cpath[1024]

=

{0};

HMODULE

hModule

=

::GetModuleHandle(NULL);

int

Length

=

::GetModuleFileNameW(hModule,cpath,1024);

这时

cpath

内容是当前程序的运行时完整路径

比如你的程序叫testexe

而这个程序存放的位置是

c:\folder01

那么cpath

就是

"c:\folder01\testexe"

以上就是关于VC 如何读取网上邻居某台电脑下的共享目录全部的内容,包括:VC 如何读取网上邻居某台电脑下的共享目录、VC 如何根据进程名称找程序的目录、如何用C语言获取目录下的文件和目录列表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9355852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存