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编程:
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语言获取目录下的文件和目录列表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)