通常,使用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)
有没有办法让这项工作?