WINAPI:如何在REMOTE计算机上将短名称转换为长名称?

时间:2018-01-26 15:41:10

标签: c++ winapi registry remote-access

通常,使用RegConnectRegistry()创建的句柄可以很容易地更改远程计算机上的注册表,该句柄可以传递给RegOpenKeyEx()和RegSetValueEx()等函数。

但是,函数GetLongPathName()和GetShortPathName()不接受句柄,因此(我假设)只能在调用它的机器上使用。

我在远程计算机(IP地址为10.0.103.108)上有一个简短名称(C:\ PROGRA~1 \ APP~1 \ APP~1.DLL),我希望使用GetLongPathName()将其转换为长名称:

DWORD WINAPI GetLongPathName(
  _In_  LPCTSTR lpszShortPath,
  _Out_ LPTSTR  lpszLongPath,
  _In_  DWORD   cchBuffer
);

作为简称_In_ LPCTSTR lpszShortPath参数,我尝试过使用:

C:\ PROGRA〜1 \ APP〜1 \ APP〜1.DLL
\\ 10.0.103.108 \ C:\ PROGRA〜1 \ APP〜1 \ APP〜1.DLL \\ 10.0.103.108 \ C $ \ PROGRA〜1 \ APP〜1 \ APP〜1.DLL

当作为_in_参数传递给GetLongPathName()时,它们都不起作用。对于每种情况,我都得到了相应的错误代码:

3(ERROR_PATH_NOT_FOUND)
67(ERROR_BAD_NET_NAME)
2(ERROR_FILE_NOT_FOUND)

有没有办法让这项工作?

0 个答案:

没有答案