繁体   English   中英

如何获取当前用户的用户名?

[英]How do I get the user name of the current user?

我想使用 C 编程访问 Windows 中的用户名,并使用该名称创建特定文件的路径,如“c:\\users\\john\\Roaming.....等等”。 所以对于每个系统用户名,例如“john”是不同的。 帮我在运行时找到用户名。

#include  <stdio.h>

int main(void)
{
    printf("%s\n", getenv("USERPROFILE"));  // Print user's home directory.
    return 0;
}

要获取用户名而不是主路径,请将USERPROFILE替换为USERNAME

您在这里寻找的可能更多是SHGetKnownFolderPath 该功能可让您查找每个用户的特殊文件夹。 这比查询用户名更可取,因为主文件夹可能与用户名不同。

WSTR* location;
HRESULT hr = SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, NULL, &location);
if (SUCCEEDED(hr))
{
    // location contains the folder path
    // call CoTaskMemFree to free up the memory once you're done with it
    CoTaskMemFree(location);
}

此处提供所谓的已知文件夹列表。

在windows上获取用户名的函数是GetUserName

这个答案可能也会对您有所帮助。

您可以使用以下代码来获取用户名。

    #include <stdlib.h>

    void main(void)
    {
        //following gets the appdata folder
        char szAppData[1024];
        char * szBufer      = 0;
        szBufer = getenv ("APPDATA");
        if (szBufer != NULL)
        {
           strcpy(szBufer , szAppData);
        }

        //following code gets the user name
        char szOSUserName[1024];
        szBufer = getenv ("USERNAME");
        if (szBufer != NULL)
        {
            strcpy(szBufer , szOSUserName);
        }
    }

您可以使用GetUserName获取当前用户的名称:

#include <Windows.h>
#include <Lmcons.h>
#include <stdio.h>

int main()
{
    char name[UNLEN + 1];
    DWORD cch = UNLEN + 1;
    if (GetUserName(name, &cch))
    {
        char cmd[100 + UNLEN + 1];
        sprintf(cmd, "echo The username is \"%s\"", name); // Silly demo command
        system(cmd);
    }
    return 0;
}

如果您想要特定格式的名称,请使用GetUserNameEx

如果您需要获取“我的文档”或“桌面”等特殊文件夹的路径,您应该使用特殊文件夹功能,如SHGetFolderPathSHGetKnownFolderPath

%USERNAME%将为您提供用户名,但更好的解决方案是将其存储在%USERPROFILE%\\\\Desktop\\\\key.txt中,至少使其与操作系统无关。

更好的解决方案是不在用户的桌面上存储私人信息。 或任何地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM